java运行class文件_java命令行下运行class文件
今天碰到了一個(gè)很變態(tài)的問(wèn)題,寫(xiě)了一個(gè)很簡(jiǎn)單的HelloWord.java,內(nèi)容如下:
package com.yanjiuyanjiu;
public class HelloWorld {
public static void main(String args[]) {
System.out.println("Hello World!");
}
}
在eclipse中運(yùn)行是可以的,但是在命令行下運(yùn)行總是失敗。我的工程位置為 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只有這個(gè)成功
Hello World!
d:/workspace/HelloWorld/bin/>java -classpath .; com/yanjiuyanjiu/HelloWorld換了個(gè)斜杠就不行了
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"
在網(wǎng)上搜索了大半天,大部分說(shuō)是環(huán)境變量,classpath或JDK版本的問(wèn)題,還有執(zhí)行時(shí)文件名class后綴不要。我一一試過(guò),都沒(méi)有解決。最后無(wú)意中換了一下命令符的位置,成功了??偨Y(jié)如下:
1. 環(huán)境變量,CLASSPATH當(dāng)然要設(shè)置好,執(zhí)行時(shí)不要帶class后綴;
2. 路徑中的斜杠用“/”而不是“/”;
3. 命令符的當(dāng)前目錄要在包的起點(diǎn)。比如這里應(yīng)該在 d:/workspace/HelloWorld/bin/>,如果在 d:/workspace/HelloWorld/bin/com/yanjiuyanjiu/>,反而不行,有點(diǎn)“近水樓臺(tái)不得月”的意思,不知道為什么,還請(qǐng)高手解釋一下。
總結(jié)
以上是生活随笔為你收集整理的java运行class文件_java命令行下运行class文件的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: java抽象工厂设计模式_23种经典设计
- 下一篇: echarts 树图样式美化_echar