Tag: jar

部署概念:打包JAR依赖关系,何时以及为何

所以我对Java EE比较陌生,我很难理解Java部署文件何时,何地以及为何与其依赖项打包在一起。 假设我将我的项目构建到myapp.jar中 ,它取决于fizz.jar,buzz.jar和JODA( joda-time-2.0.jar )。 我听说默认的类加载器没有将jar包装在其他jar中,所以我必须假设如果我从Ant调用了一个jar任务,那么将调用默认的类加载器并创建myapp.jar而不使用它们依赖于它。 这是因为心态是在容器或其他系统中部署无mainjar,这些jar将在运行时提供其需求吗? 如果没有,那么myapp.jar如何正常运行? 可执行jar子怎么样? 要满足,这些必须与无mainjar不同,因为它们是独立的单位,对吧? 这意味着他们需要将所有依赖项打包在一起,对吧? 最后但并非最不重要的,那些依赖于依赖于jar子等的jar子的jar子呢? (即,依赖图是巨大的)? 我想所有这些问题可归纳如下: 这是一个非可执行jar背后的想法,它将以这样一种方式运行,它将知道在运行时查找其依赖关系的类路径? (因此不需要与其依赖项打包)? 可执行jar背后的想法是它是一个独立的单元,应该与它的依赖关系? 如果我对上面问题#1的断言是正确的,那么这样的类路径配置是如何发生的? 这些设置是否存储在jar中(例如清单中)? 否则,JRE如何知道在运行时搜索特定jar依赖项的位置? 这些问题的答案实际上将澄清我在Java基础知识方面的许多挂断,因此这里的任何输入/帮助都将受到极大的欢迎! 谢谢

使用Java读取.jar清单文件

所以我试图通过检查mainfest文件中的一些值来查看.jar​​是否有效。 使用java读取和解析文件的最佳方法是什么? 我想过用这个命令来解压缩文件 jar -xvf anyjar.jar META-INF/MANIFEST.MF 但我可以这样做: File manifest = Command.exec(“jar -xvf anyjar.jar META-INF/MAINFEST.MF”); 然后使用一些缓冲的读者或其他东西来解析文件的行? 谢谢你的帮助…

Java最小化依赖关系

我有一种情况,其中有一小段Java代码,它依赖于大量的jar。 但是,这些jar中的依赖关系非常浅。 在大多数情况下,它仅依赖于单个界面的jar。 我不想将所有jar分发给应用程序,而是将特定的类文件分发到它实际使用的jar中。 这样做的原因是为了节省空间(此代码将存在于applet中)。 有谁知道自动执行此操作的工具或方法? 假设所有依赖项都是静态的,这似乎完全有可能。 有任何想法吗?

在内存jar /类文件中执行

我在某个位置有一个jar文件(例如app.jar),可以作为来自http服务器的文件/流。 问题是app.jar本身是一个经常更新的jar文件,在服务器上定期更新。 我有另一个jar文件(比如load.jar),任何用户都可以下载。 在运行时,用户运行load.jar,这需要在单独的进程中加载​​app.jar,将app.jar保存在内存中(不缓存到磁盘),然后执行app.jar并终止自身(加载。jar)。 有可能吗? 任何帮助都非常感谢。 提前致谢。 此致,KT —————————更新。 嗨, 谢谢大家的回复。 但是,我想我还没有给出完整的图片。 附上描绘场景的图像链接文本 。 4个jar子(实际的通用执行器)托管在中央服务器上。 这些经常更新(最初每天最多3-4次,最终每天一次)。 托管其中一个成员的本地服务器,该服务器已初始化。 本地服务器上的启动程序会下载所有4个二进制文件并将其保留在内存中 – 不会缓存到磁盘。 这些jar文件是自给自足的,并且不依赖于“本地服务器”上的任何库 – 它们实际上是从“本地服务器”调用jar。 “客户端”jar最终由“本地服务器”托管,并通过“本地服务器”通过webapp按需转发给其客户端。 此外,Launcher需要通过在单独的JVM中从服务器调用下载的Main jar来退出。 此致,KT

如何在eclipse中使用JAR中的类

我有两个jar文件 – jar1和jar2。 它们都位于C:\ Eclipse projects \中,我已将它们的路径添加到环境变量CLASSPATH中,如下所示 .;C:\Program Files\Java\jre6\lib\ext\QTJava.zip;C:\Eclipse projects\stdlib.jar;C:\Eclipse projects\algs4.jar “。;” 一开始就在那里,所以我离开了他们。 然后我从它们的位置C:\ Eclipse projects \中将jar添加到项目中,它们显示为Referenced Libraries。 但是,当我尝试从jar实例化一个类时,它无法识别它。 我也无法导入jar(导入jar1)。 我尝试在项目中添加一个lib文件夹后,我在那里添加了jar。 之后,我再次将它们作为引用添加(因此它们在引用的库中不会出现两次),但是,我仍然无法使用内部类。 任何帮助都感激不尽。 更新:我的结果肯定是错的。 这些建议都不适合我。 这是一个包含所有步骤的video:screencast.com/t/gC81YzCsLY0e 回到顶端|提供反馈解决方案在我的项目中,我有一个名为TestProject的包,似乎这些jar需要一个默认包。 删除TestProject包并使用defaultPackage后,一切都在添加外部JAR后正常工作,如下所述。

IntelliJ在JavaFX JAR文件中包含外部JARS

如何在我的主jar文件中包含lib下的所有jar文件? IntelliJ是否意味着创建JAR文件? 因为我似乎无法使它工作。 以下是我的设置中的一些屏幕: 结果如下: 有人可以向我解释为什么在我的主JAR文件之外生成其他JAR文件? 我应该发运2个JARS?

在Jar中查找实现接口的类

我想找出jar中的类是否已经实现了特定的接口。 我已经实现了下面的代码,但它遍历jar文件中的所有类,并在每个类上查找它是否已实现此特定接口。 public static synchronized boolean findClassesInJar(final Class baseInterface, final String jarName){ final List classesTobeReturned = new ArrayList(); if (!StringUtils.isBlank(jarName)) { //jarName is relative location of jar wrt. final String jarFullPath = File.separator + jarName; final ClassLoader classLoader = this.getClassLoader(); JarInputStream jarFile = null; URLClassLoader ucl = null; final URL url = new URL(“jar:file:” + […]

Java配置构建路径或WEB-INF / lib文件夹

我已经看过很多教程和应用程序将他们的jar放在构建路径中,而其他人将它放在他们的web-inf / lib文件夹中,是否有任何显着差异? 两者的优点和缺点是什么? 我将一个jar放在libs文件夹中并将jar放在构建路径中的指示器是什么?

如何检查jar文件是否有效?

我的webapp允许用户上传jar文件。 但是,上传jar文件后,它已损坏。 我已经通过比较md5校验和(winmd5free)来validation这一点。 上传的jar文件看起来“正常”和“正确” 与原始文件相比较的文件大小(在KB级别) 我可以使用7z打开上传的jar文件并查看其内容(资源和类文件),与原始文件相比,一切都是相同的 当我打开上传的jar文件(使用Notepad ++)时,我注意到二进制内容与原始内容不同。 另外,当我使用JarInputStream读取jar条目时,没有条目。 JarInputStream is = new JarInputStream(new FileInputStream(new File(“uploaded.jar”))); JarEntry entry = null; while(null != (entry = is.getNextJarEntry())) { System.out.println(entry.getName()); } 此外,当我双击jar(Windows)时,我收到以下消息。 错误:jarfile无效或损坏 我的问题是 有没有办法以编程方式检查jar文件是否有效? 我本来希望JarInputStream立即检测到它,但它根本没有显示任何问题 当我双击jar文件时,在Windows中,java.exe是否给了我无效或损坏的jar文件消息? 如何在类路径中传入无效的jar文件时,不会抛出错误/exception? 例如java -cp uploaded.jar; libs * com.some.class.Test ? 请注意,这与jar签名和/或检查jar的签名无关。 它只是检查一个文件(上传与否)是否是一个有效的jar文件(不一定是jar的类文件是有效的,因为已经有关于这个问题的另一个SOpost)。 跑步的结果 jar -tvf uploaded.jar java.util.zip.ZipException: error in opening zip file at […]

在jar子中包含属性/配置文件是不好的做法吗?

例如: MyApp是一个Web应用程序,其中包含一个属性文件(server.properties),用于描述应用程序的配置数据(例如服务器名称)。 在开发阶段,server.properties位于其自己的IDE项目文件夹(它的逻辑位置)中。 现在是时候部署MyApp了。 IDE使得类文件以及支持配置文件变得非常简单。 现在我们将Jar放入适当的Web容器中,然后我们就去…. 一周后…… MyApp使用的服务器配置数据需要更改。 哪个更有意义? A.在IDE域中修改server.properties文件并生成一个全新的jar文件。 重新部署。 (这意味着弹出应用程序以进行简单的配置更改)。 B.破解已部署的Jar并修改server.properties文件? (如果缓存了server.properties,可能必须在MyApp中调用刷新函数…但不应该要求完整的应用程序反弹。还需要记住修改源server.properties以便将来的部署不会还原server.properties到旧的服务器名称)。 C.首先将server.properties置于jar文件的外部。 与B的过程非常相似,将配置数据保存在jar外部的细微差别(在开发和生产部署之间引入不同的路径) D.其他: 谢谢!