我发现某人的pom.xml中使用了maven-shade-plugin.我之前从未使用过maven-shade-plugin(我是Maven n00b),所以我试着理解使用它的原因及其作用.
我查看了Maven文档,但是我无法理解这句话:
"这个插件提供了将工件打包在超级jar中的功能,包括它的依赖关系和阴影 - 即重命名 - 一些依赖项的包." 页面上的文档似乎不是新手友好的.
什么是"超级罐子?" 为什么有人想制作一个?重命名依赖项包的重点是什么?我试图通过maven-shade-plugin apache页面上的示例,例如"为Uber Jar选择内容",但我仍然无法理解"着色"所取得的成就.
任何指向说明性示例/用例的指针(解释为什么在这种情况下需要着色 - 解决了什么问题)将不胜感激.最后,我什么时候应该使用maven-shade-plugin?
maven范围compile
与provided
何时将工件构建为JAR 之间有什么区别?如果它是WAR,我明白 - 工件将包含在WEB-INF/lib中或不包含在WEB-INF/lib中.但是在JAR的情况下它并不重要 - 不包括依赖性.当它们的范围是compile
或时,它们必须在类路径上provided
.我知道provided
依赖关系不是传递性的 - 但它只是一个区别吗?
你如何在很多jar文件中找到特定的类名?
(寻找实际的类名,而不是引用它的类.)
我有一个名为helloworld.jar的JAR文件.为了运行它,我在命令行窗口中执行以下命令:
java -jar helloworld.jar
Run Code Online (Sandbox Code Playgroud)
这工作正常,但如何通过双击执行它?我需要安装任何软件吗?
我将Java库打包为JAR,java.lang.IncompatibleClassChangeError
当我尝试从中调用方法时,它会抛出很多s.这些错误似乎是随机出现的.什么类型的问题可能导致此错误?
我想从我的jar中读取资源,如下所示:
File file;
file = new File(getClass().getResource("/file.txt").toURI());
BufferredReader reader = new BufferedReader(new FileReader(file));
//Read the file
Run Code Online (Sandbox Code Playgroud)
并且它在Eclipse中运行时工作正常,但是如果我将它导出到jar中运行它就会出现IllegalArgumentException:
Exception in thread "Thread-2"
java.lang.IllegalArgumentException: URI is not hierarchical
Run Code Online (Sandbox Code Playgroud)
而且我真的不知道为什么,但经过一些测试我发现如果我改变了
file = new File(getClass().getResource("/file.txt").toURI());
Run Code Online (Sandbox Code Playgroud)
至
file = new File(getClass().getResource("/folder/file.txt").toURI());
Run Code Online (Sandbox Code Playgroud)
然后它的工作正好相反(它适用于jar而不是eclipse).
我正在使用Eclipse,我的文件夹在一个类文件夹中.
查看jar文件中的类,方法,属性等最简单的方法是什么?我正在寻找相当于非常有用的Lutz Roeder .NET Reflector - for Java的东西
如何判断使用哪个版本的Java编译器构建jar?我有一个jar文件,它可以在三个JDK中的任何一个中构建.我们需要确切地知道哪一个,所以我们可以证明兼容性.编译器版本是嵌入在类文件或jar中的某个位置吗?
我创建了一个这样的JAR文件:
jar cf Predit.jar *.*
Run Code Online (Sandbox Code Playgroud)
我通过双击它来运行这个JAR文件(它不起作用).所以我从DOS提示符运行它,如下所示:
java -jar Predit.jar
Run Code Online (Sandbox Code Playgroud)
它引发了"无法加载主类"异常.所以我解压缩了这个JAR文件:
jar -xf Predit.jar
Run Code Online (Sandbox Code Playgroud)
我运行了类文件:
java Predit
Run Code Online (Sandbox Code Playgroud)
它运作良好.我不知道为什么JAR文件不起作用.请告诉我运行JAR文件的步骤
我有一个Eclipse项目,我希望自动将我的Java项目内置到JAR中.我知道我可以选择将项目导出到JAR中; 如果我点击右键; 但我真正想要的是,像Eclipse一样自动构建项目的.class
文件并将它们放在目标文件夹中; 它还应该自动构建JAR并在某个或特定位置复制最新的JAR.
是否有以这种方式配置Eclipse的选项,以自动构建JAR?
只是为了让人清楚,耐心地回答我的问题; 我不是把ANT视为解决方案; 因为我已经使用它了,但我希望它可以通过基于时间的触发器或通过更改立即构建来自动启动.