没有清单文件 Eclipse
No manifest file Eclipse
他们向我发送了一个 java 代码(用 Eclipse 编写),该代码以 zip 形式提供。解压后,我有以下文件:
- .settings
- org.eclipse.jdt.core.prefs
- bin
- anon
- Discovery.class
- Main.class
- Main.class
- Server.class
- src
- anon
- Discovery.java
- Main.java
- Server.java
- .classpath
- .project
- jssc.jar
当我尝试从命令行执行 jssc.jar 时,我收到一条消息说没有主清单属性。
我已经解压了 jar 文件以查看清单及其包含的内容:
- jssc:里面有很多 "class" 个文件
- libs:文件夹包含每个 OS
的文件
- META-INF:带有文件清单
所以,似乎有一个清单。但是,当我打开它时出现:
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.8.1
Created-By: 1.6.0_45-b06 (Sun Microsystems Inc.)
X-COMMENT: Main-Class will be added automatically by build
我该怎么办?如何将 jar 文件添加到构建路径?
如果您尝试使用以下命令执行它:java -jar jssc.jar
但失败了,请尝试使用以下命令
java -cp jssc.jar anon.Main
上面会告诉JVM在它的class路径中加载jssc.jar然后在Mainclass.
中执行main方法
更新:如果 java 程序需要的 classes 比 jssc.jar 中存在的 classes 多,请将它们添加到带有“;”的 -cp 选项中分隔符。
例如:
java -cp jssc.jar;bin/anon/;libs/a.jar;libs/;.... anon.Main
我猜你应该对提供的 java 文件做一些修改,同时使用提供的 .jar 文件作为参考。
所以您可能应该将项目导入 Eclipse 作为第一步。
为此:
- Select "File" > "Import..."
- 选择 "General" > "Existing Projects into Workspace"
- 点击"Next >"
- Select "Select archive file:"
- 使用 "Browse" 按钮找到他们给你的存档。
- Select eclipse 会找到的项目
- 单击 "Finish" 按钮
首先,我想承认@ioannis-barakos 的建议为我解决了这个问题。我添加这个答案只是因为我的情况有点复杂,并且不容易适应对已接受答案的评论,特别是因为我打算对我的解释非常明确。
我遇到这个问题是因为我试图找出 运行 由 Eclipse/Maven “安装”命令生成的 jar 的正确命令。该程序是模块化的,使用 JavaFX 作为 GUI。 Maven 命令“clean javafx;运行”成功。
“为什么要命令 运行 一个罐子?”你问。我希望与一些朋友和同事分享该程序,以获得反馈。我可以使用 JLINK(“clean javafx:jlink”),但创建的图像只能在 Windows OS 上使用,而不适用于 Mac 或 Linux。具有正确命令行的 jar 文件应该 运行 on Mac。 (至少在 jigsaw 和 javafx 分裂之前,他们曾经很容易做到。)
所以,我的Windows的成功命令行如下:
java -cp myProject-0.0.1.jar --module-path "%PATH_TO_FX%" --add-modules javafx.graphics,javafx.controls my.package.path.LaunchMyProject
正如@ioannis-barakos 所解释的那样,-cp 参数为我们提供了 class 路径,如果还有其他元素,它们将是 "; “分开了。
当我将 JavaFx 用于 GUI 时,必须包含 JavaFX 模块的路径。这是通过 --module-path 参数完成的。模块的其他位置将是“;”分开了。这里的位置完全可以拼出来,但是我是利用了一个环境变量PATH_TO_FX。这指向 JavaFX SDK 中的 /lib 文件夹,其中包含 javafx .jar 文件。为此,我遵循 Gluon 为 Getting Started with JavaFX 提供的文档。 最后请注意,环境变量在引号中,因为我将 JavaFX 文件夹放在同一个文件夹与其他 java jdks 一样,在 c:/program files/java
中,并且 program files
中的“ ”被解释为分隔符。
我用 --add-modules 参数添加的模块列表是在 module-info.java 文件中的 requires 行。我的模块信息中也有 java.desktop 的要求行,但本地 Java(假设它是模块化版本)应该已经涵盖了。
最后,class 的确切语法可以在将 .jar 转换为 .zip 并检查文件夹时找到。请注意,地址中没有“/”或“\”,只有“.”。分隔符。
他们向我发送了一个 java 代码(用 Eclipse 编写),该代码以 zip 形式提供。解压后,我有以下文件:
- .settings
- org.eclipse.jdt.core.prefs
- bin
- anon
- Discovery.class
- Main.class
- Main.class
- Server.class
- src
- anon
- Discovery.java
- Main.java
- Server.java
- .classpath
- .project
- jssc.jar
当我尝试从命令行执行 jssc.jar 时,我收到一条消息说没有主清单属性。 我已经解压了 jar 文件以查看清单及其包含的内容:
- jssc:里面有很多 "class" 个文件
- libs:文件夹包含每个 OS 的文件
- META-INF:带有文件清单
所以,似乎有一个清单。但是,当我打开它时出现:
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.8.1
Created-By: 1.6.0_45-b06 (Sun Microsystems Inc.)
X-COMMENT: Main-Class will be added automatically by build
我该怎么办?如何将 jar 文件添加到构建路径?
如果您尝试使用以下命令执行它:java -jar jssc.jar
但失败了,请尝试使用以下命令
java -cp jssc.jar anon.Main
上面会告诉JVM在它的class路径中加载jssc.jar然后在Mainclass.
中执行main方法更新:如果 java 程序需要的 classes 比 jssc.jar 中存在的 classes 多,请将它们添加到带有“;”的 -cp 选项中分隔符。
例如:
java -cp jssc.jar;bin/anon/;libs/a.jar;libs/;.... anon.Main
我猜你应该对提供的 java 文件做一些修改,同时使用提供的 .jar 文件作为参考。
所以您可能应该将项目导入 Eclipse 作为第一步。
为此:
- Select "File" > "Import..."
- 选择 "General" > "Existing Projects into Workspace"
- 点击"Next >"
- Select "Select archive file:"
- 使用 "Browse" 按钮找到他们给你的存档。
- Select eclipse 会找到的项目
- 单击 "Finish" 按钮
首先,我想承认@ioannis-barakos 的建议为我解决了这个问题。我添加这个答案只是因为我的情况有点复杂,并且不容易适应对已接受答案的评论,特别是因为我打算对我的解释非常明确。
我遇到这个问题是因为我试图找出 运行 由 Eclipse/Maven “安装”命令生成的 jar 的正确命令。该程序是模块化的,使用 JavaFX 作为 GUI。 Maven 命令“clean javafx;运行”成功。
“为什么要命令 运行 一个罐子?”你问。我希望与一些朋友和同事分享该程序,以获得反馈。我可以使用 JLINK(“clean javafx:jlink”),但创建的图像只能在 Windows OS 上使用,而不适用于 Mac 或 Linux。具有正确命令行的 jar 文件应该 运行 on Mac。 (至少在 jigsaw 和 javafx 分裂之前,他们曾经很容易做到。)
所以,我的Windows的成功命令行如下:
java -cp myProject-0.0.1.jar --module-path "%PATH_TO_FX%" --add-modules javafx.graphics,javafx.controls my.package.path.LaunchMyProject
正如@ioannis-barakos 所解释的那样,-cp 参数为我们提供了 class 路径,如果还有其他元素,它们将是 "; “分开了。
当我将 JavaFx 用于 GUI 时,必须包含 JavaFX 模块的路径。这是通过 --module-path 参数完成的。模块的其他位置将是“;”分开了。这里的位置完全可以拼出来,但是我是利用了一个环境变量PATH_TO_FX。这指向 JavaFX SDK 中的 /lib 文件夹,其中包含 javafx .jar 文件。为此,我遵循 Gluon 为 Getting Started with JavaFX 提供的文档。 最后请注意,环境变量在引号中,因为我将 JavaFX 文件夹放在同一个文件夹与其他 java jdks 一样,在 c:/program files/java
中,并且 program files
中的“ ”被解释为分隔符。
我用 --add-modules 参数添加的模块列表是在 module-info.java 文件中的 requires 行。我的模块信息中也有 java.desktop 的要求行,但本地 Java(假设它是模块化版本)应该已经涵盖了。
最后,class 的确切语法可以在将 .jar 转换为 .zip 并检查文件夹时找到。请注意,地址中没有“/”或“\”,只有“.”。分隔符。