[英]Compiling multiple packages using the command line in Java with external Jars
我有以下文件结构,需要使用命令行进行编译。 我一直在使用Eclipse,并且在编辑器中运行良好。
/src
/maps
Structures/ (.java files) using a 3rd party external JAR file in E:\Lib\math.jar
Util/ (.java files)
TestClasses/ (.java files) Test.java is the main class
我使用以下javac指令编译了上述文件
C:\src\maps>javac -classpath E:\Lib\math.jar Util\*.java Structures\*.java TestClasses\*.java
这样可以毫无问题地进行编译并创建相关的.class文件。
但是,当我尝试使用以下java指令运行主类时
C:\src\maps>java TestClasses\TestSOM
我得到以下异常
Exception in thread "main" java.lang.NoClassDefFoundError: TestClasses\TestSOM (
wrong name: maps/TestClasses/TestSOM)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:791)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:14
2)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:472)
使用命令行执行主类的正确方法是什么?
使用类的完全限定名称并包括库,以避免所引用类的运行时错误
C:\src\>java -classpath .;E:\Lib\math.jar map.TestClasses.Test
假设Test.java
具有您提到的main方法。
在下面使用:
C:\src>java maps.TestClasses.TestSOM
如果您的班级在src目录中。 如果有其他更改目录到该目录。
cd maps/TestClasses
java -classpath E:\Lib\math.jar;../Structures;../Util; Test
如果您的班级是Test.java。
您应该开始将所有类放在同一文件夹中,这样会更容易启动您的项目。 它们不必位于单独的文件夹中,并且当您使用单独的文件夹时,您希望它们位于不同的“程序包”中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.