日期:2014-05-20  浏览次数:20768 次

新手请教javac编译完后,如何用java命令运行有包的类
本人在准备OCJP的过程中,要考DOS下直接编译运行JAVA程序...但模拟了一个最简单的,运行时抛异常.

我做法如下,请高手纠错...谢谢!

第1步.写代码:

package com.qp.ocjp;
public class TestJar {
public static void main(String[] args) {
new TestJar();
System.out.println("test Jar");

}

第2步.上述代码存到如下目录下
  C:\Users\jocelynl\Desktop\development\java>


第3步:在上述目录下,手工创建包结构中需要的目录, com\qp\ocjp,用于存放编译后的class文件

第4步: 在TestJar.java所在的目录下,用javac编译代码
    C:\Users\jocelynl\Desktop\development\java>javac TestJar.java
    编译后,检查第3步创建的目录下,生成了编译后的class文件

第5步:java命令运行class文件-----出错了
     C:\Users\jocelynl\Desktop\development\java>java com.ocjp.qp.TestJar

   Error: Could not find or load main class com.ocjp.qp.TestJar
javac

------解决方案--------------------
第1步.写代码:
...
第2步.上述代码存到如下目录下:C:\Users\jocelynl\Desktop\development\java>
第3步.在这个目录下编译 javac -d . TestJar.java
第4步.运行 java com.qp.ocjp.TestJar
------解决方案--------------------
javac 的时候带上-d参数就会自动创建包的目录。
------解决方案--------------------
引用:
运行时,写不写包名,都会出错。。

C:\Users\jocelynl\Desktop\development\java>java TestJar
Exception in thread "main" java.lang.NoClassDefFoundError: TestJar (wrong name:
com/qp/ocjp/TestJar)
        at java.lang.ClassLoader.defineClass1(Native Method)
        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$100(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)