如何在命令提示符中运行jar文件?

当工件构建为JAR时,maven范围编译和提供之间的区别是什么?如果它是WAR,我能理解-工件将包含或不包含在WEB-INF/lib中。但是对于JAR来说,这并不重要——依赖关系不包括在内。当它们的作用域被编译或提供时,它们必须在类路径上。我知道所提供的依赖关系不是可传递的——但这仅仅是一个区别吗?

有人知道可以反编译整个Jar文件而不是单个类的免费反编译器吗?我有一个问题的子类,如名称$1.类名称$2.类名称

我想从我的罐子里像这样读一个资源:

File file;
file = new File(getClass().getResource("/file.txt").toURI());
BufferedReader reader = new BufferedReader(new FileReader(file));

//Read the file

当在Eclipse中运行它时,它工作得很好,但如果我将它导出到一个jar,然后运行它,会有一个IllegalArgumentException:

Exception in thread "Thread-2"
java.lang.IllegalArgumentException: URI is not hierarchical

我真的不知道为什么,但通过一些测试,我发现如果我改变了

file = new File(getClass().getResource("/file.txt").toURI());

to

file = new File(getClass().getResource("/folder/file.txt").toURI());

然后它反过来工作(它在jar中工作,但在eclipse中不工作)。

我正在使用Eclipse,文件所在的文件夹位于类文件夹中。

如何在Eclipse中导入一个jar ?

我发现有人在pom.xml中使用了maven-shade-plugin。我以前从未使用过Maven -shade-plugin(我是一个Maven n00b),所以我试图了解使用这个插件的原因和它的功能。

我看了Maven文档,但我不明白这句话:

这个插件提供了将工件打包到一个super -jar中的能力,包括它的依赖项,以及对一些依赖项的包进行着色(即重命名)。

页面上的文档似乎对新手不太友好。

什么是“超级罐子”?为什么会有人想做一个呢?重命名依赖包的意义何在?我试图通过maven-shade-plugin apache页面上的例子,如“为Uber Jar选择内容”,但我仍然不能理解“着色”是如何完成的。

任何指向说明性示例/用例的指针(解释为什么在这种情况下需要阴影-它解决了什么问题)都将是非常感谢的。最后,我应该什么时候使用maven-shade-plugin?

为什么在Java中这么难做到这一点?如果您希望拥有任何类型的模块系统,您需要能够动态加载JAR文件。有人告诉我,有一种方法可以通过编写自己的ClassLoader来实现,但这需要做很多工作,因为(至少在我看来)应该像调用以JAR文件作为参数的方法一样简单。

对实现这一功能的简单代码有什么建议吗?

有没有办法强制maven(2.0.9)将所有依赖项包含在一个jar文件中?

我有一个项目的构建到一个单一的jar文件。我希望依赖的类也能复制到jar中。

更新:我知道我不能只在jar文件中包含一个jar文件。我正在寻找一种方法来解包指定为依赖项的jar,并将类文件打包到我的jar中。

我的java程序被打包在一个jar文件中,并使用了一个外部jar库,bouncy castle。我的代码编译良好,但运行jar会导致以下错误:

java.lang.SecurityException: Manifest主属性的签名文件摘要无效

我在谷歌上搜索了一个多小时,想要找到一个解释,但几乎没有什么价值。如果有人看到这个错误之前,可以提供一些帮助,我将不胜感激。

.jar文件和.war文件有什么区别? 仅仅是文件扩展名还是还有其他的东西?