繁体   English   中英

无法从CMD运行.class文件

[英]Can't run .class files from CMD

我无法从CMD运行.class文件,而且似乎找不到解决错误消息的方法。 我的环境变量设置为C:\\ program files(x86)\\ java \\ jdk1.7.0_45 \\ bin,java和javac的版本均为1.7.0_45,并且我在本地目录中运行代码:

C:\Java\hfjavafinalsamples\chap01> javac PhraseOMatic.java

C:\Java\hfjavafinalsamples\chap01> java -classpath . PhraseOMatic
Exception in thread "main" java.lang.NoClassDefFoundError: PhraseOMatic (wrong n
ame: chap01/PhraseOMatic)
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
        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: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)


C:\Java\hfjavafinalsamples\chap01>

该类的完全限定名称为chap01.PhraseOMatic ,因为其简单名称为PhraseOMatic ,而其包装为chap01

java命令需要一个完全限定的名称。 根据其类路径和此完全限定的名称,它将查找.class文件。 因此,如果您的类路径为“。” 完全限定的名称为chap01.PhraseOMatic ,它将查找./chap01/PhraseOMatic 因为您已经在chap01文件夹包中,所以这将不起作用。

因此,类路径应为..或(更好),您应位于hfjavafinalsamples文件夹中以运行应用程序:

C:\Java\hfjavafinalsamples> java -classpath . chap01.PhraseOMatic

另外,您不应将源文件(.java)和已编译文件(.class)放在同一文件夹树中。 创建一个包含源树的src文件夹,以及一个包含编译后的类树的classes文件。 并使用javac的-d classes选项将类编译到classes文件夹。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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