我尝试在终端中使用classpath执行CreateTextFileTest.class文件,如下所示:
java -classpath ..:"/home/fatih/NetBeansProjects/Unit17 - CreatingTextFile/src/unit17/unit17/creatingtextfile" CreateTextFileTest
此目录中的我的类文件:/home/fatih/NetBeansProjects/Unit17 - CreatingTextFile/src/unit17/unit17/creatingtextfile
。
目录中有3个类:AccountRecord.class
,CreateTextFile.class
和CreateTextFileTest.class
但是,当我使用上面的代码从终端执行CreateTextFileTest时,出现了错误:
Exception in thread "main" java.lang.NoClassDefFoundError: CreateTextFileTest (**wrong name**: unit17/creatingtextfile/CreateTextFileTest) at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:800) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 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:425) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) at java.lang.ClassLoader.loadClass(ClassLoader.java:358) at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)
据我所知,因为CreateTextFileTest.java
使用了两个不同的类,执行失败。如何处理这种情况?如何运行我的java项目?在这种情况下如何使用classpath?我错误地使用了吗?
答案 0 :(得分:0)
错误消息指出在编译的类中声明的包名称与JVM在类路径设置时所期望的不匹配。类路径应指向程序包启动的目录,而不是实际包含.class
文件的目录。鉴于您的错误消息,我认为这应该有效:
java -classpath ..:"/home/fatih/NetBeansProjects/Unit17 - CreatingTextFile/src/unit17" unit17.creatingtextfile.CreateTextFileTest
鉴于您的路径中存在重复的unit17
,我得到的印象是此处还有其他内容混淆了。你会在Stack Overflow ...