【发布时间】:2018-03-12 06:30:00
【问题描述】:
我正在尝试运行具有以下结构的程序:
+src
+gui
-XL.java
-moreFiles.java
+menu
-guiFiles.java
+util
-utilFiles.java
+extra
-extraFiles.java
我正在尝试通过调用来编译代码
javac gui/XL.java
成功了。 当我尝试使用
运行代码时java gui.XL
我收到以下错误消息:
Exception in thread "main" java.lang.BootstrapMethodError: java.lang.NoClassDefFoundError: java/lang/invoke/StringConcatFactory
at gui.XL.<init>(XL.java:25)
at gui.XL.main(XL.java:58)
Caused by: java.lang.NoClassDefFoundError: java/lang/invoke/StringConcatFactory
... 2 more
Caused by: java.lang.ClassNotFoundException: java.lang.invoke.StringConcatFactory
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 2 more
我想我的类路径有一些问题,但我不知道如何修复它。有人有什么建议吗?
【问题讨论】:
-
你必须将所有的.java源文件编译成.class文件,而不是一个。
-
那是Java 9的类你安装java 9了吗?
-
@duffymo:当我首先编译所有 .java 文件时,我得到了同样的错误。
-
@Oleg:当我检查我的 java 版本(使用 sudo update-alternatives --config java)时,我知道我的计算机上有 java-8-openJDK 和 java-9-openJDK,我有都试过了。它们都不起作用。但它说我的java版本是“9 internal”(不管是什么意思)。当我使用“9-internal”版本时,我得到一个 java 运行时环境 crashdump,而不是上面发布的 java-8-openjdk 错误。