1、B里应为package myjava.test.*2、不能有,你的主java文件才能有main 方法,main也不会运行3、当你new A的时候当然是构造函数先执行

解决方案 »

  1.   

    是javac 出错还是java出错?
    错误是什么?
      

  2.   

    首先你要确保A.class和B.class都位于E:\myjava\test目录下并且大小写没什么问题,另外你的class A是位于哪一个包中,也就是说你在定义class A的文件中是否使用了package myjava.test;,如果未使用,那么它将位于缺省包中,与B不是同一个包。当然也可以用import来导入类。如果还是不行,建议加入运行路径,如下所示:
    java -classpath e:\  myjava.test.A(如果class A中也有main函数)
    or
    java -classpath e:\  myjava.test.BA、B类中当然有可以都有main函数,你用new新建一个类的实例时,类中的main函数是不会自动执行的,另外,严格说来,main函数只是放在class中,其实并不属于哪一个class。下面我再复制粘贴一下很久以前我写的一个帖子,希望能对你有所帮助。对于java来说,我们要将其他编程语言的观念彻底转变过来,要记住java虚拟机运行的永远是类(在java中全部都是类),所以当你在命令行:
    java xxxx
    时,其实它是执行名字为xxxx的这个类,而并不是xxxx.class这个文件,这和C/c++以及其他语言所完全不同的。所以,当java虚拟机不能找到xxxx这个类(包括它引用的其他类)时(java自动在你所设定的类搜索路径里搜索,类搜索路径在系统classpath里设置,但是你永远也无法确定和涵盖你在这个系统里面可能产生的所有类搜索路径),它就会报告错误:Exception in thread "main" java.lang.NoClassDefFoundError: d:\j2sdk\helloworld/class
    此时,你可以用如下办法来解决:
    假设你的java程序编译成功并放在 /tmp目录下,文件名为:helloworld.class
    (注意大小写,并且假设你没有自定义包)
    java -classpath /tmp  helloworld如果你自定义了包,假设是package myjava,并且位于/tmp下,类文件名还是同上:
    java -classpath /tmp  myjava.helloworld
      

  3.   

    我在B 里写了 package myjava.test,A,B应在同一目录下.
    如果B与A不在同一目录,则B里应包括 import myjava.test.*;
    A 里可以有 main 的方法 (public static void main(String args[]){}, 
    可作为测试A用,不影响B对A的使用.