两个类存在同一个包内,用其中一个引用另外一个,不知道出了什么问题,大侠帮忙看下把package lession1;public class Lession1
{    public static void main(String[] args)
    {       PublicClassSamePackage pcsp=new PublicClassSamePackage();//找不到符号
       pcsp.pcsp();
     }
}package lession1;public class PublicClassSamePackage
{    public static void main(String[] args)
    {       public void pcsp()//非法的表达式开始,需要;
       {
           System.out.println("相同package中的公开类");
       }
    }
}

解决方案 »

  1.   

     public void pcsp()//非法的表达式开始,需要;
           {
               System.out.println("相同package中的公开类");
           }
    拿到main方法外面去
    main方法里怎么可以定义方法呢?
      

  2.   

    package lession1; public class PublicClassSamePackage { public static void main(String[] args) { public void pcsp()//非法的表达式开始,需要;  { System.out.println("相同package中的公开类"); } } }
    这里就写错了应该是这样
    package lession1;
    public class PublicClassSamePackage {
       public void pcsp(){
       System.out.println("相同package中的公开类");
      }
    }
      

  3.   

    你用lesson1调用publicclasssamepackage(简称p),p这个类中就不需要用main方法了,你直接写pcsp这个方法就是了
    顶3楼
      

  4.   


    那为什么单独运行PublicClassSamePackage的时候,提示缺少main函数呢?
    还有Lession1这个文件找不到符号还没解决..
      

  5.   

    lz,你的p类是用来提供打印这个方法的,lesson1是调用它执行的,所以执行的是了lesson1,lesson1要main而p需要。
      

  6.   

    这个我懂了,不过Lession1这个类的错误是什么呢?耐心求解给全分!
      

  7.   

    这么写吧package lession1;class PublicClassSamePackage {
       public void pcsp(){
       System.out.println("相同package中的公开类");
      }
    }public class Lession1
    {    public static void main(String[] args)
        {       PublicClassSamePackage pcsp=new PublicClassSamePackage();
           pcsp.pcsp();
         }
    }我写到一起了,如果你非得给p加个public,那你就新建个p.java就是了。
      

  8.   

    怎么有两个main方法啊。这是不对的。
      

  9.   

    Lession1的错误不是说了方法嵌套语法错误了吗.
    main()在哪个类里面不重要, 这个方法表明这个类可以执行
    就是直接java xxx  , xxx必须有main()才可以执行
      

  10.   

    谢谢这位仁兄,直接输入java Lession1可以通过运行,楼上都说main函数不用写两次,不过为什么还会出现这个错误?如下:D:\JAVAgo\lession1>java Lession1
    Exception in thread "main" java.lang.NoClassDefFoundError: Lession1 (wrong name:
     lession1/Lession1)
            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$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)
            at java.lang.ClassLoader.loadClassInternal(Unknown Source)
    Could not find the main class: Lession1.  Program will exit.
      

  11.   

    你应该调用的是java lession1.Lession,而且编译的时候应该是java -d . PublicClassSamePackage.java 
    和java -d . Lession.java,再弄弄吧!或者你干脆把两个文件中的package给注销掉
      

  12.   

    最后帮小弟看看吧,不行就结了package lession1;public class Lession1
    {    public static void main(String[] args)
        {
           PublicClassSamePackage pcsp=new PublicClassSamePackage();
           pcsp.pcsp();
         }
    }
    package lession1;
    public class PublicClassSamePackage {
       public void pcsp(){
       System.out.println("相同package中的公开类");
      }}
      

  13.   

    我也来简单的说两句,出错的原因楼主自己想吧!。第一句:java中貌似不可以在方法体内再定义方法!第二句:一个程序中出现了两个主方法,如果你是JVM的话你会去执行那个???
      

  14.   

    这程序会报错么?如果放在两个 .java 文件里,绝对不会错的,错了就是你环境变量的问题。如果是放在一个 .java 文件里验证可调用性的话,可以把后一个中的 package lession1; 和第二行的public 去掉,就能运行了
    记住,一个 .java 文件里,可以有多可 class ,但是 只能存在一个 用 public 修饰的!其效果和写在多个文件里一样,因为编译后,有多少个class被定义,就会有多少个 .class 生成。不同之处,可能就是访问权限了
      

  15.   

    咋俩main??
    不知你当时的想法!
    只能挑语法错误!
      

  16.   


    //package lession1;public class Lession1
    {    public static void main(String[] args)
        {
           PublicClassSamePackage pcsp=new PublicClassSamePackage();
           pcsp.pcsp();
         }
    }//package lession1;
    public class PublicClassSamePackage {
       public void pcsp(){
       System.out.println("相同package中的公开类");
      }}
    把两个package注释掉肯定没问题,你在编译和执行的时候命令有误,所以才会出现你说的错误提示
    D:\JAVAgo\lession1>java Lession1 
    Exception in thread "main" java.lang.NoClassDefFoundError: Lession1 (wrong name: 
    lession1/Lession1) 
      

  17.   

    看了楼主的问题以及各位大虾的回复,我试验了一下,其实两个main()不是问题,问题就是不能在main()方法中定义方法;
    两个main()分别写在两个类中,你运行哪个类,就会调用那个类的main();并且还能调用另一个类的main()呢?
      

  18.   

    哎楼主多看看教程吧,一个类可以定义多个方法, 但是决对不可能方法里在定义方法的!以下代码是没有问题的,我测试了的
    public class Lession1 {
    public static void main(String[] args) {
    PublicClassSamePackage pcsp=new PublicClassSamePackage();
        pcsp.pcsp();
    }
    }
    public class PublicClassSamePackage {

    public  void pcsp(){
       System.out.println("相同package中的公开类");
      }}
      

  19.   

    谢谢大家,终于运行成功了!!去掉package lession1;就ok
    不过为什么不能标记上这个package呢?无语了。。
      

  20.   

    估计你刚学,还不知道如果是带包的话,java编译class的时候是要java -d . Test.java的格式来做,而执行的时候是要用java package.ClassName的格式来做的
      

  21.   

    我写了一个可以运行:
    package lesson1;
    import  lesson1.PublicClassSamePackage; 
    public class Lesson1 extends PublicClassSamePackage 

      public static void main(String[] args) 
      {
         PublicClassSamePackage pcsp=new PublicClassSamePackage();
          pcsp.pscp();
      }
    }package lesson1;
    public class PublicClassSamePackage
    {     
        public static void main(String[] agrs)
        {
     PublicClassSamePackage pscp=new PublicClassSamePackage();
     pscp.pscp();       
        }     
        public void pscp()
        {                
            System.out.println("相同package中的公开类");
        }       
    }        运行过程:
    >javac -d PublicClassSamePackage.java
    >javac -d Lesson1.java
    >java lesson1.Lesson1
    OK!
      

  22.   

    楼主本意是想在同一包下调用两个类的
    删除了package lession1;这条语句是可以运行,但本意就失去了9楼的还有其他楼的都写对了,其实加上package是可以的,楼主出错是在于运行语句上
    首先编译:javac Lession1.java运行:java lession1.Lession1应该加上包的名字,Lession1.class的文件在lession1这个包里面,因为java会在当前的目录下寻找lession1这个包
    然后在包里面寻找Lession1.class这个文件运行,包名食类名的一部分楼主你试试就知道了