我的程序有两个JAVA文件一个是Doll.java另一个是AppMain.java
Doll.java代码如下:
public class Doll{
    private String name;
    public Doll(String name){
        this.name=name;
    }
    public void putname(){
        System.out.println("我的名字是:" + name);
    }
}
AppMain.java代码如下:
package data;
public class AppMain{
    public static void main(String[] args){
        Doll people1 = new Doll("老郭");
        Doll people2 = new Doll("小欣");
        Doll people3 = new Doll("狗熊");
        people1.putname();
        people2.putname();
        people3.putname();
    }
}
在命令行下,我进行编译:
输入“javac Doll.java”
编译成功
输入“javac AppMain.java”
出错!错误提示为:

解决方案 »

  1.   

    class Doll{ 
        private String name; 
        public Doll(String name){ 
            this.name=name; 
        } 
        public void putname(){ 
            System.out.println("我的名字是:" + name); 
        } 

    public class AppMain{ 
        public static void main(String[] args){ 
            Doll people1 = new Doll("老郭"); 
            Doll people2 = new Doll("小欣"); 
            Doll people3 = new Doll("狗熊"); 
            people1.putname(); 
            people2.putname(); 
            people3.putname(); 
        } 
    }运行结果:
    我的名字是:老郭
    我的名字是:小欣
    我的名字是:狗熊
      

  2.   

    Doll.java代码如下:
    package data; //Doll.java加入这一行public class Doll{ 
        private String name; 
        public Doll(String name){ 
            this.name=name; 
        } 
        public void putname(){ 
            System.out.println("我的名字是:" + name); 
        } 
    } AppMain.java代码如下: 
    package data; 
    public class AppMain{ 
        public static void main(String[] args){ 
            Doll people1 = new Doll("老郭"); 
            Doll people2 = new Doll("小欣"); 
            Doll people3 = new Doll("狗熊"); 
            people1.putname(); 
            people2.putname(); 
            people3.putname(); 
        } 
    } 在命令行下,我进行编译: 
    输入“javac data/AppMain.java” 
    编译成功 
    输入“java data/AppMain
    输出:
    我的名字是:老郭 
    我的名字是:小欣 
    我的名字是:狗熊
      

  3.   

    可以啊 ,我刚试过了 没问题。你应该是把两个文件放在了不同的包里,你在AppMain里调用Doll时要先用import关键字导入,你在试试
      

  4.   

    3楼的朋友,我是新学的,你能不能帮我把代码写出来,让我看看!怎么用import?
      

  5.   

    我补充说一句,我的程序分别在:
    Doll.java在e:\lyzylx\java\data下
    AppMain.java在e:\lyzylx\java下
      

  6.   

    如果你把两段代码放在一个包里,就是那个package 包名,就不用导入了。导入是你要用到别的包里的类,就要用import导入。
    格式是import 包名.类名;这个类是你要用到的类,也可以用*,就是导入这个包中所有的类。
      

  7.   

    以下是我改过的内容:
    Doll.java没做改动
    AppMain.java改动如下:
    package data;
    import data.*;
    public class AppMain{
        public static void main(String[] args){
            Doll people1 = new Doll("老郭");
            Doll people2 = new Doll("小欣");
            Doll people3 = new Doll("狗熊");
            people1.putname();
            people2.putname();
            people3.putname();
        }
    }
    还是有错误,错误如下:
      

  8.   

    但我的data文件夹里有Doll.class这个文件啊!
      

  9.   

    你的第一个类没有打包啊,你把这两个类放在一个包里,就是放在一个文件夹下试试,包对路径非常敏感的,路径必须要一致才行,而且执行时也要用包名+文件名,等你以后用了eclipse就不用担心这样的问题了
      

  10.   

    你把两个.JAVA文件都放到同一个文件夹下,再重新编译就可以了
      

  11.   

    在包里面的类是不能访问没有包的类的,如果要访问,需要将两个类放在一起。。意思就是,Doll类如果不在包里面,需要将AppMain类和Doll放在一起。
    相反,没有在包里面的类,可以访问到在包里面的类。也就是说,Doll类可以访问data.AppMain并可以创建AppMain的实例
    总之,可能是跟classpath无法设置有关系。。
      

  12.   


    Doll.java代码如下: 
    package data;
    public class Doll{ 
        private String name; 
        public Doll(String name){ 
            this.name=name; 
        } 
        public void putname(){ 
            System.out.println("我的名字是:" + name); 
        } 

    AppMain.java代码如下: 
    package com.data; 
    import data.Doll;
    public class AppMain{ 
        public static void main(String[] args){ 
            Doll people1 = new Doll("老郭"); 
            Doll people2 = new Doll("小欣"); 
            Doll people3 = new Doll("狗熊"); 
            people1.putname(); 
            people2.putname(); 
            people3.putname(); 
        } 

    希望能帮助到你
      

  13.   

    import如果不会,建议楼主赶紧研究一下,以方便你以后的编程。
      

  14.   

    楼上有正确答案了啊    
    lz总结一下吧   有的时候来得太容易不是好事啊
    去查查资料   关于:包,import......
      

  15.   

    答案可能是有了,也可能是没有!我在WIN2000下试代码如下:
    Doll.java代码如下: 
    package data;
    public class Doll{ 
        private String name; 
        public Doll(String name){ 
            this.name=name; 
        } 
        public void putname(){ 
            System.out.println("我的名字是:" + name); 
        } 

    AppMain.java代码如下: 
    import data.Doll;
    public class AppMain{ 
        public static void main(String[] args){ 
            Doll people1 = new Doll("老郭"); 
            Doll people2 = new Doll("小欣"); 
            Doll people3 = new Doll("狗熊"); 
            people1.putname(); 
            people2.putname(); 
            people3.putname(); 
        } 

    这回好使了,但同样的代码在WINXP下试就不好使!可能是WINXP的系统问题!一会回单位看看!在此先谢谢大家的热心帮助,让我明白了关于PACKAGE这个东西!总结一下不知道对不对,请大家帮着看看,不对的话请给予指出。
    对于PACKAGE这个语句,其实就是在当前目录里的*.java文件可以访问到当前目录下的所以子目录,而不用加PACKAGE声明,但要用import这个语句给出相对(不是绝对)路径!而对于在当前目录下的子目录里的*.java文件在用Package声明,告诉程序我在什么地方,但访问不了他所在目录的父目录。对吗?
      

  16.   


    如果类在包中,必须声明package,否则,在编译的时候要添加类路径,也就是所谓的classpath。。
    import可以访问带有package声明的父路径,这取决于你的classpath。