[英]Running java program using packages in multiple folders
我正在尝试运行具有以下结构的程序:
+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
我想我的类路径有一些问题,但我不知道如何解决它。 有没有人有什么建议?
让我们同意暂时坚持使用JDK 8。 您可能不需要最新的JDK 9功能。
您需要知道如何一次编译目录中的所有.java文件 。 我建议您了解告诉JDK在何处写入.class文件的命令行选项。
您绝对必须了解CLASSPATH的工作方式,或者无法编写Java。
您永远不要在机器上设置CLASSPATH环境变量。 每次编译和运行时,都应该学习如何使用-classpath选项正确设置它。
您可以考虑使用IDE。 我不愿提出建议,因为它可能会让人不知所措,但是JetBrains的IntelliJ是市场上最好的IDE。 如果您知道如何使用它,这是一个简单的问题。
我的问题与类路径无关,或者我没有使用IDE。 我的问题来自以下事实:我正在更改“ java”命令以运行我的java-openjdk-8,但我的编译器仍与java-openjdk-9一起运行。 因此,解决方案是
sudo update-alternatives --config javac #Change to java 8
sudo update-alternatives --config java #Change to java 8
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.