如何在ubuntu终端中使用classpath来执行java类?

时间:2015-02-12 07:48:40

标签: java linux classpath

我尝试在终端中使用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.classCreateTextFile.classCreateTextFileTest.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?我错误地使用了吗?

1 个答案:

答案 0 :(得分:0)

错误消息指出在编译的类中声明的包名称与JVM在类路径设置时所期望的不匹配。类路径应指向程序包启动的目录,而不是实际包含.class文件的目录。鉴于您的错误消息,我认为这应该有效:

java -classpath ..:"/home/fatih/NetBeansProjects/Unit17 - CreatingTextFile/src/unit17" unit17.creatingtextfile.CreateTextFileTest

鉴于您的路径中存在重复的unit17,我得到的印象是此处还有其他内容混淆了。你会在Stack Overflow ...

上得到更好的答案