好的,所以我一直在尝试制作和执行jar文件。它使用命令“java -jar bybys.jar”运行,但是当我尝试使用enter运行它时,它给出了一个错误“无法找到主类bardejov.Image。程序将退出。”
这是清单:
Manifest-Version: 1.0
Created-By: 1.7.0_02 (Oracle Corporation)
Main-Class: bardejov.Image
(是的,我使用了新行)
编译jar文件时,我尝试了与目录的每个可能组合,我不知道问题出在哪里。我用过 - C:\Java\2D>jar cfm bybys.jar Manifest.txt bardejov/Image.class bardejov/Board.class bardejov/*jpg
目录是:
META-INF/
META-INF/MANIFEST.MF
bardejov/Image.class
bardejov/Board.class
bardejov/siknius.jpg
主要课程:
package bardejov;
import javax.swing.JFrame;
public class Image extends JFrame {
public Image() {
add(new Board());
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(477, 530);
setLocationRelativeTo(null);
setTitle("Siknius");
setVisible(true);
setResizable(false);
}
public static void main(String[] args) {
new Image();
}
}
如何解决?
更新
我修好了。问题是我没有安装最新的JRE。
答案 0 :(得分:3)
Manifest.txt中的类名后面有一个额外的空格字符。这是由错误消息追捕:
Could not find the main class bardejov.Image .
^^
答案 1 :(得分:1)
问题实际上似乎是jar不包含目录bardejov
的条目;它仅包含目录中文件的条目。您可以在商家信息中看到这一点;看看有bardejov
的条目。创建jar文件时,必须告诉jar
包含目录,而不仅仅是其中的文件:
jar cfm bybys.jar Manifest.txt bardejov
答案 2 :(得分:0)
从Java 6开始,您可以使用jar命令指定入口点。以下命令应为您的应用程序创建可执行jar文件:
jar cfe bybys.jar bardejov.Image bardejov/Image.class bardejov/Board.class bardejov/*jpg
您无需编写和添加自定义清单。
资源
<强>更新强>
以下适用于我的机器:
在example/Hello.java
创建一个java源文件:
package example;
public class Hello {
public static void main(String[] args) {
System.out.println("Hello world!");
}
}
使用命令编译
javac example/Hello.java
jar with command
jar cfe example.jar example.Hello example/*.class
使用命令执行
java -jar example.jar
输出
Hello world!
<强> UPDATE2 强>
现在看起来像配置问题。代码和jar显然是正确的。
快速修复/ workaroud:直接启动jar,编写一个简短的批处理或shell脚本文件,只执行java -jar ...
命令。
答案 3 :(得分:-3)
打开cmd提示符并输入
set JAVA_HOME=c:\PATH\TO\JAVA_DIRECTORY
set CLASSPATH=.;%JAVA_HOME%\bin;%JAVA_HOME%\lib
确保将这些变量包含在PATH环境变量中。
您可以转到控制面板 - &gt;来获取Win7中的环境变量。系统 - &gt;高级系统设置 - &gt;高级标签 - &gt;环境变量。