繁体   English   中英

使用多个文件夹中的包运行java程序

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM