【发布时间】:2018-06-12 04:37:21
【问题描述】:
我尝试在 intellij 中从我的 java 项目创建一个 jar,但出现此错误。
我使用了 intellij 向导(“从具有依赖项的模块创建 jar”),提取了 jar 依赖项,并指定生成的 MANIFEST.MF 应位于 java/main/resources。
这是我得到的一些窗口:
这里是反编译jar的视图;有一个 META-INF 目录,其中包含 MANIFEST.MF 文件。主类是BookWindow;位于您可以在上面看到的视图目录中。
法语的错误是:
PS D:\docs\biblio2\out\artifacts\biblio2_jar3> java -jar .\biblio2.jar Erreur :不可能的de trouver ou Charger la classe principale view.BookWindow
并且在以下2张截图中,可以查看到intellij idea的artifact页面:
我有什么问题?
编辑
好吧,我认为 BookWindow 的完整包名是“view”...我为此截取了另一个屏幕截图:
编辑 我可以从 IntelliJ 运行程序。 我将“com.*”目录中的文件移动到 src/main/java 但是如果我现在尝试用 maven 打包它,我会收到此错误:
编译错误 [错误] /D:/docs/biblio2/src/main/java/amazon/advertising/api/sample/SignedRequestsHelper.java:[28,39] 包 org.apache.commons.codec.binary 不存在
com.* 的子目录中有 2 个类,用于访问亚马逊图书数据库。在其“导入”中,第一行是:
导入 org.apache.commons.codec.binary.Base64;
在这 2 个动作(有 2 个文件)之前,我能够用 maven 打包项目,我得到了一个包含所有依赖项的巨大 jar 文件,但我无法运行它:“java -jar myfile.jar”得到了一个关于 Flamingo 类的 classNotFoundException,虽然它存在于 jar 的 lib/ 文件夹和 MANIFEST.MF 中... Flamingo 是一条漂亮的秋千丝带(类似于 2016 字)。
【问题讨论】:
-
view.BookWindow 类的完整包名是什么?
-
@Ivan 我截图了,我觉得就是简单的“查看”
-
也许它不相关,但我在屏幕截图的依赖项列表中看到重复的 byte-buddy、byte-buddy-agent 和 mockito-core。您确定包含代码中使用的所有依赖项吗?我尝试在我的项目中使用 Intellij 向导构建 jar,它可以工作。
-
您是否更改了创建的 jar 工件中的实际清单文件?您可以使用应用程序运行/调试配置通过 IDE 中的 main 方法运行 view.BookWindow 类吗?尝试通过 Maven 构建和运行 jar 并比较结果。我还看到
src/com文件夹中的项目中有另一个源根目录。这样的布局对我来说看起来不正确。那个文件夹是干什么用的?你能把它移到src/main/java标准Maven位置吗? -
@Andrey 我更新了我的问题,我没有更改清单文件。
标签: java intellij-idea jar packaging