Sam*_*Sam 9 java executable jar nullpointerexception
我刚开始学习java,只知道少量代码,但这仍然是一个简单的程序.它更像是一个恶作剧程序,但主要是测试我是否可以制作一个jar文件.
这是代码:
import java.awt.*;
import java.awt.event.*;
import java.lang.*;
import java.util.Random;
public class randommouse {
public static void main(String[] args) {
for (int i=1; i<1000; i++) {
Random rand = new Random();
int w = rand.nextInt(1024) + 1;
int h = rand.nextInt(768) + 1;
int t = rand.nextInt(2000) + 1;
try {
Robot r = new Robot();
r.mouseMove(w,h);
Thread.sleep(t);
} catch (AWTException e) {}
catch (InterruptedException e) {}
catch (NullPointerException e) {}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我randommouse.java把它保存到调用的文件中,然后使用编译它
javac randommouse.java
Run Code Online (Sandbox Code Playgroud)
这是有效的,当我运行它时
java randommouse
Run Code Online (Sandbox Code Playgroud)
它也可以正常工作.
那么我尝试创建一个jar文件.我用这个命令
jar cvf randommouse.jar randommouse.class
Run Code Online (Sandbox Code Playgroud)
它的工作原理.然后我双击jar文件,它出现错误Java Exception.
那么我在cmd中运行它
java -jar randommouse.jar
Run Code Online (Sandbox Code Playgroud)
并得到此错误
F:\Java>java -jar randommouse.jar
Exception in thread "main" java.lang.NullPointerException
at sun.launcher.LauncherHelper.getMainClassFromJar(LauncherHelper.java:3
99)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:463)
F:\Java>
Run Code Online (Sandbox Code Playgroud)
我是否需要提出一个论点,如果是这样,我将它放在哪里以及如何?
先谢谢
Sam
从JDK doc:
为了使此选项起作用,JAR文件的清单必须包含表单的一行
Main-Class: classname
Run Code Online (Sandbox Code Playgroud)
这里,classname标识具有public static void main(String [] args)方法的类,该方法充当应用程序的起点.有关使用Jar文件和Jar文件清单的信息,请参阅Jar工具参考页面和Java Tutorial的Jar跟踪.
使用此选项时,JAR文件是所有用户类的源,并忽略其他用户类路径设置.