Tag: jar

JarScan,扫描所有子文件夹中的特定类的所有JAR文件

虽然我们有最新的部署版本,但我们看到正在使用旧版本的类。 要扫描应用程序服务器的所有子文件夹中的所有JAR文件,我们如何编写一个小的shell脚本来打印出找到此特定类的JARS文件的文件名?

是否有工具可以发现类路径中的多个jar中是否存在相同的类?

如果类路径中有两个包含同一类的不同版本的jar,则类路径顺序变得至关重要。 我正在寻找一种工具,可以检测和标记给定类路径或文件夹集中的此类潜在冲突。 当然是一个开始的脚本: classes=`mktemp` for i in `find . -name “*.jar”` do echo “File: $i” > $classes jar tf $i > $classes … done 有一些聪明的排序/ uniq / diff / grep / awk以后有潜力,但我想知道是否有人知道任何现有的解决方案。

找不到主类,程序会退出

我在Windows 7中使用命令提示符创建了一个可执行jar jar cvfm MyJarName.jar manifest.txt *.class 它创建了.jar文件。 但是当我试图打开它时,我会看到一个弹出窗口 Could not find the main class: . Program will exit. 然而,当我使用时 java -jar jarName.jar 在命令提示符下,它工作正常。 这是怎么回事? 我希望能够双击它。

使用Gradle的JAR中的META-INF /服务

我想构建一个可以加载ServiceLoader的插件模块。 这需要将文件添加到META-INF/services目录,该目录以服务接口命名,并包含实现它的类的限定路径。 然后,您可以通过调用ServiceLoader.load()来加载这些服务。 这是一个例子: 假设我们想要提供一个名为org.example.plugins.PluginService的插件接口。 然后,我们在org.example.plugins.impl.ExamplePlugin类中提供此服务的实现。 如果我们想要某种插件机制,我们可以创建一个包含实现的JAR文件。 此JAR文件还必须包含文件META-INF/services/org.example.plugins.PluginService 。 该文件必须包含一行 org.example.plugins.impl.ExamplePlugin 使ServiceLoader能够找到实现。 如果该JAR文件位于构建路径中,则可以通过调用来加载插件 Iterator it = ServiceLoader.load(PluginService.class).iterator(); 该迭代器将允许您访问ServiceLoader找到的所有插件。 出于某种原因,Gradle默认情况下不会将文件包含到META-INF目录中。 有没有办法让生成的JAR包含这样的文件? 我已经在类Jar找到了方法metaInf 。 但我不知道groovy足以找到我自己的解决方案。

如何在生产中测试和运行jar时创建一个可用的MANIFEST.MF?

我花了太多时间试图解决这个问题。 这应该是最简单的事情,每个在Java中分发Java应用程序的人都必须处理它。 我只是想知道向我的Java应用程序添加版本控制的正确方法,以便我可以在测试时访问版本信息,例如在Eclipse中调试并从jar运行。 这是我在build.xml中的内容: 这创建了/META-INF/MANIFEST.MF,我可以在Eclipse中调试时读取值: public MyClass() { try { InputStream stream = getClass().getResourceAsStream(“/META-INF/MANIFEST.MF”); Manifest manifest = new Manifest(stream); Attributes attributes = manifest.getMainAttributes(); String implementationTitle = attributes.getValue(“Implementation-Title”); String implementationVersion = attributes.getValue(“Implementation-Version”); String builtDate = attributes.getValue(“Built-Date”); String builtBy = attributes.getValue(“Built-By”); } catch (IOException e) { logger.error(“Couldn’t read manifest.”); } } 但是,当我创建jar文件时,它会加载另一个jar的清单(可能是应用程序加载的第一个jar – 在我的例子中,是activation.jar)。 此外,尽管所有正确的值都在清单文件中,但以下代码不起作用。 Package thisPackage […]

如何validation签名的jar是否包含时间戳?

签名jar并使用-tsa选项后,如何validation时间戳是否包含在内? 我试过了: jarsigner -verify -verbose -certs myApp.jar 但输出没有指定时间戳的任何内容。 我问,因为即使我在-tsa URL路径中有拼写错误,jarsigner也会成功。 这是GlobalSign TSA URL: http : //timestamp.globalsign.com/scripts/timstamp.dll ,它背后的服务器显然接受任何路径(即timestamp.globalsign.com/foobar),所以最后我是不确定我的jar子是否加盖时间戳。

如何为javadocs创建可分发的jar?

我创建了一个我作为JAR文件发布的API。 它是专有的,所以我不得不从中删除源文件。 我目前包含一个单独的/ doc文件夹,其中包含Eclipse的export-to-javadoc向导的输出。 不错,但我想更进一步。 我想将javadocs作为jar文件分发,可以很容易地将其放入包含我的API的jar文件的未来项目中。 我知道我已经看过它用我用过的其他发行版多次这样做了,但我没有找到任何运气。 最终目标是允许未来的开发人员轻松访问hover在评论和这种性质的事物上。 谢谢!

将jar打包到具有独立外部资源和依赖关系的dist目录中

这是我想要实现的 – 一个dist目录(或一个zip文件),如下所示: dist/ |– application-1.0.jar |– conf/ |– application.properties |– log4j.properties |– lib/ |– *.jar 基本上: 生成一个可执行jar(清单中有适当的类路径) 我想排除src/main/resources与jar自动打包,以便可以修改application.properties 我想在lib/目录中有外部依赖项 我想出了一个使用配置文件的解决方案,其中包含附加到包阶段的插件,但使用组件插件是一个更好的解决方案吗?

如何使用Maven将实现版本值添加到jar清单?

我想将一个Implementation-Version行添加到我的jar文件中反映POM版本号的清单。 我不能为我的生活解决如何使用jar插件来做到这一点。 这可能吗?

Jar hell:如何在运行时使用类加载器将一个jar库版本替换为另一个jar库版本

我还是比较新的Java,所以请耐心等待。 我的问题是我的Java应用程序依赖于两个库。 让我们称它们为库1和库2.这两个库共享对库3的相互依赖。但是: 库1完全需要库3的版本1。 库2完全要求库3的版本2。 这正是JAR地狱的定义(或者至少是其中的一个变体)。 如链接中所述,我无法在同一个类加载器中加载第三个库的两个版本。 因此,我一直试图弄清楚是否可以在应用程序中创建一个新的类加载器来解决这个问题。 我一直在研究URLClassLoader ,但我无法弄明白。 这是一个演示问题的示例应用程序结构。 应用程序的Main类(Main.java)尝试实例化Library1和Library2,并运行在这些库中定义的一些方法: Main.java(原始版本,在尝试解决方案之前): public class Main { public static void main(String[] args) { Library1 lib1 = new Library1(); lib1.foo(); Library2 lib2 = new Library2(); lib2.bar(); } } Library1和Library2都共享对Library3的相互依赖,但是Library1只需要版本1,而Library2只需要版本2.在这个例子中,这两个库只打印他们看到的Library3版本: Library1.java: public class Library1 { public void foo() { Library3 lib3 = new Library3(); lib3.printVersion(); // Should […]