package feng;
public class Hello{
  public static void main(String []args){
  System.out.println("hello world");
}
}代码如上,Hello.java存放在D盘根目录下,   
进cmd
d:
然后编译:javac -d . Hello.java
通过   d盘根目录下出现一个feng的文件夹,里面有一个Hello.class文件
    运行:java feng.Hello
成功
但是如果编译方式不变,运行时如下:
先 cd feng   进入feng文件夹所在路径
然后  java Hello居然报错!!!!could find the main class。。
我的classpath没有配 JDK1.5以后是允许的,我的JDK版本是1.6  
请问为什么????

解决方案 »

  1.   

    本帖最后由 AWUSOFT 于 2011-11-04 01:42:30 编辑
      

  2.   

    不解了 在命令行下编译java文件怎么会根据package自动生成文件夹"feng",至少我没见过
    我认为不用工具的话不会自动生成文件夹feng既然 运行:java feng.Hello了说明你知道java包名机制
    干嘛还要到feng里面去运行呢
    你java那一下 并且没指定路径的话JVM就会从当前路径开始 后面接上包路径
    发现feng下没有feng这个包 肯定会出错了  除非你把package feng; 去掉
    或者乖乖回到包外面去运行
      

  3.   

    不需要进入包路径
    -----------------------------------------------
    这是我的笔记:
    Java中的包主要是为了使客户端程序员合理组织代码,分割区间,有序调用。
    怎样编译一个带包的java文件呢?这里给出一个PackageTest.java的源文件
    package user.liu;
    class Student {
       Student(String name) {
           System.out.println("My name is:"+name);  
       }
       Student(String name,int old) {
           System.out.println("My name is:"+name+",Old is:"+old);
       }
    }public class PackageTest {
       public static void main(String args[]) {
            Student s1=new Student("Liu");
            Student s2=new Student("Tom",15);
       }
    }
    它的目录是:D:\Test\java
    可以如下编译:
    C:\Documents and Settings\Administrator>D:D:\>cd D:\Test\javaD:\Test\java>javac -d . PackageTest.javaD:\Test\java>java user.liu.PackageTest
    输出:
    My name is:Liu
    My name is:Tom,Old is:15