java运行class文件_java命令行下运行class文件
今天碰到了一個很變態的問題,寫了一個很簡單的HelloWord.java,內容如下:
package com.yanjiuyanjiu;
public class HelloWorld {
public static void main(String args[]) {
System.out.println("Hello World!");
}
}
在eclipse中運行是可以的,但是在命令行下運行總是失敗。我的工程位置為 d:/workspace/HelloWorld/。
嘗試了很多次,如下
d:/workspace/HelloWorld/bin/com/yanjiuyanjiu/>java HelloWorld
Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorld (wrong name: com/yanjiuyanjiu/HelloWorld)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(Unknown Source)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$000(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
Could not find the main class: HelloWorld.? Program will exit.
Exception in thread "main"
d:/workspace/HelloWorld/bin/com/yanjiuyanjiu/>java -classpath .; HelloWorld
Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorld (wrong name: com/yanjiuyanjiu/HelloWorld)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(Unknown Source)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$000(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
Could not find the main class: HelloWorld.? Program will exit.
Exception in thread "main"
d:/workspace/HelloWorld/bin/com/yanjiuyanjiu/>cd..
d:/workspace/HelloWorld/bin/com/>cd..
d:/workspace/HelloWorld/bin/>java -classpath .; com/yanjiuyanjiu/HelloWorld只有這個成功
Hello World!
d:/workspace/HelloWorld/bin/>java -classpath .; com/yanjiuyanjiu/HelloWorld換了個斜杠就不行了
Exception in thread "main" java.lang.NoClassDefFoundError: com/yanjiuyanjiu/HelloWorld (wrong name: com/yanjiuyanjiu/HelloWorld)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(Unknown Source)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$000(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
Could not find the main class: com/yanjiuyanjiu/HelloWorld.? Program will exit.
Exception in thread "main"
d:/workspace/HelloWorld/bin/>java -classpath ./com/yanjiuyanjiu/; HelloWorld
Exception in thread "main"java.lang.NoClassDefFoundError: HelloWorld (wrong name: com/yanjiuyanjiu/HelloWorld)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(Unknown Source)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$000(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
Could not find the main class: HelloWorld.? Program will exit.
Exception in thread "main"
在網上搜索了大半天,大部分說是環境變量,classpath或JDK版本的問題,還有執行時文件名class后綴不要。我一一試過,都沒有解決。最后無意中換了一下命令符的位置,成功了。總結如下:
1. 環境變量,CLASSPATH當然要設置好,執行時不要帶class后綴;
2. 路徑中的斜杠用“/”而不是“/”;
3. 命令符的當前目錄要在包的起點。比如這里應該在 d:/workspace/HelloWorld/bin/>,如果在 d:/workspace/HelloWorld/bin/com/yanjiuyanjiu/>,反而不行,有點“近水樓臺不得月”的意思,不知道為什么,還請高手解釋一下。
總結
以上是生活随笔為你收集整理的java运行class文件_java命令行下运行class文件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java抽象工厂设计模式_23种经典设计
- 下一篇: echarts 树图样式美化_echar