p1是你的package名字呀!运行有package的程序需要在程序前加上package名字的,如:java myapp.app

解决方案 »

  1.   

    因为你定义了classpath在e:\testjava
    这样运行java的时候他会从e:\testjava下开始找你的class。
    但你又定义了package为pl。
    这样你的class文件必须放在pl目录下,
    所以你用java Demo2他是找不到E:\testjava下的 Demo2。class
    必须用java pl.Demo2
    他才会去找pl下的class。
    不过你可把pl目录打包成jar这样就好运行了。你也可以试试把classpath设成e:\testjava\pl
    java Eemo2看,这个我没有试过不知道是否成功。
      

  2.   

    hehe,我试了一下,发现 java Demo2不会成功。
    你用了package以后你要运行他必须带上他的package.
      

  3.   

    TO  hymmyh(羽),是呀,能告诉我d:\testjava\javac Demo1.java 和 d:\testjava\javac Demo2.java都可以通过,当编译Demo2.java是,会在包p1里生成一个 Demo1.class文件,而没有生成Demo2.class. 这一点我有点迷惑 
    为什么?
      

  4.   

    不太可能吧,你用JAVAC?这是我用JAVAC后C:\test>javac *.javaC:\test>dir
     驱动器 C 中的卷是 SYSTEM
     卷的序列号是 1120-12D9 C:\test 的目录2002-07-12  14:03       <DIR>          .
    2002-07-12  14:03       <DIR>          ..
    2002-07-12  14:21                  405 Demo1.class   <=====
    2002-07-12  14:21                  744 Demo2.class   <=====
    2002-07-12  14:09                  135 Demo1.java
    2002-07-12  14:10                  237 Demo2.java
                   4 个文件          1,521 字节
                   2 个目录    863,350,784 可用字节
      

  5.   

    你应该这样编译!javac -D . Demo1.java;javac -D . Demo2.java;
    这样就会在当前目录生成p1 子目录该目录下有两个文件:Demo1.class,Demo2.class
      

  6.   

    带包的编译和不带包的编译是不一样的了
    如下:
    c:\>java -d 包的父母录 要编译的文件.java
    运行如下:
    c:\>java 包名.编译的文件名  (不带.class)
      

  7.   

    程序改为如下,可能对你有用。。
    public class Demo1
    {
      public int a;
      public void method()
      {        System.out.println("demo1");
      }
              public Demo1(){}  //
    }
    好运与你同行。
      

  8.   

    TO  flylijian(飞入绝境),给了我最好的答案
    谢谢大家!!