当我在eclipse中调试时,这行代码工作正常。
this.primaryStage.addEventHandler(KeyEvent.KEY_PRESSED, new EventHandler<KeyEvent>() {
@Override
public void handle(KeyEvent keyEvent) {
InputManager.Instance().addEvent(keyEvent);
}
});
当我将自己的代码(不是脚本)导出到.jar中时,它会抛出一个相当长的异常。
Exception in Application start method
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(Unk
nown Source)
at com.sun.javafx.application.LauncherImpl.launchApplication(Unknown Sou
rce)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at sun.launcher.LauncherHelper$FXHelper.main(Unknown Source)
Caused by: java.lang.RuntimeException: Exception in Application start method
at com.sun.javafx.application.LauncherImpl.launchApplication1(Unknown So
urce)
at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$156(
Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NoClassDefFoundError: test/Game$1
at test.Game.start(Game.java:62)
at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$163
(Unknown Source)
at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$176(Unknown
Source)
at com.sun.javafx.application.PlatformImpl.lambda$null$174(Unknown Sourc
e)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.application.PlatformImpl.lambda$runLater$175(Unknown S
ource)
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(Unknown Source)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at com.sun.glass.ui.win.WinApplication.lambda$null$149(Unknown Source)
... 1 more
Caused by: java.lang.ClassNotFoundException: test.Game$1
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 10 more
Exception running application test.Game
然而,当我以相同的方式导出它时,但是处理程序被注释掉了,它运行正常。 我试过root.addEventHandler,root / primaryStage.setOnKeyPressed,单独声明处理程序,..
你能发现原因吗?
答案 0 :(得分:1)
使用我自己的代码将其导出到.jar
您自己的代码&#34;是不是正确的,因为它不包括(define low
(λ (a)
(cond
[(zero? a) '()]
[else (cons (sub1 a) (low (sub1 a)))])))
文件中的SqlConnection con = new SqlConnection("connection string here");
...
con.Open();
SqlCommand cmd = new SqlCommand(@"INSERT INTO Accounts
(server)
VALUES ('" + comboBox1.SelectedItem.ToString() + "'", con);
cmd.ExecuteNonQuery();
con.Close();
MessageBox.Show("Data inserted.");
文件。
您的课程在test/Game$1.class
包中被称为.jar
。当类使用匿名类时,必须为这些类指定名称,以便创建Game
文件(内部也需要名称)。这些文件的名称可以是任何名称,但当前方案是在定义类之后命名,在test
符号后添加序列号,因此第一个匿名类被调用{ {1}},第二个将被称为.class
,依此类推。
这就是为什么在编译$
时,最终会得到2个文件:Game$1.class
和Game$2.class
。 这些文件的两个都必须添加到Game.java
文件中。
如果可能的话,你不应该依赖这个命名约定,因为它可能在将来发生变化,而其他编译器可能会采用不同的方式。
答案 1 :(得分:0)
ClassNotFound异常通常是由于您的CLASSPATH环境变量未正确设置。
JVM必须从CLASSPATH目录遍历各处,但无法找到已编译的* .class和java jar文件。解决此问题的一种方法是使用java二进制文件中的-cp选项。或者,您可以将CLASSPATH环境设置为java文件所在的目录。
在Ecplipse中运行正常,因为classPath设置为工作区,IDE已经为您处理了这个问题。
请阅读此处了解有关CLASSPATH的更多信息。 https://docs.oracle.com/javase/tutorial/essential/environment/paths.html