//这是一个文件
package com.star.dbtest;
import java.io.*;
public class Logger
{
public void writelog(String content)
{
try
{
String fileName = "C:\\Application.log";
FileWriter writer = new FileWriter(fileName);
writer.write(content);
writer.write("\n");
writer.close();
}
catch(IOException e)
{
}
}
}
//这是第二个文件
package com.star.dbtest;
public class test
{
public static void main(String[] args)
{
Logger mylog = new Logger();
mylog.writelog("test");
}
}然后在命令行编译:
javac Logger.java test.java;
编译没问题。
然后命令行执行:
java test
报错,Exception in thread "main" java.lang.NoClassDefFoundError:test(wrong name:com/star/dbtest/test)
请问这个错是怎么回事

解决方案 »

  1.   

    package com.star.dbtest;
    public class test
    {
    public static void main(String[] args)
    {
    Logger mylog = new Logger();
    mylog.writelog("test");
    }
    }
    这段代码中的Logger没有指定位置,在最上面加上import com.star.dbtest.Logger;因为不在同一个包中的2个类互相引用的用import。不过,你的2个包怎么是一个名字,如果是同一个包中的2个类就不用引用了。
      

  2.   

    javac -d . com/start/dbtest/Test.java 编译那个 Logger 不用编译,会连带在 Test.java 一起编译的。java com.start.dbtest.Test 运行
      

  3.   

    如果目录结构是这样:
    classes/com/star/dbtest/test.class
    classes/com/star/dbtest/Logger.class
    那么你在cmd中进入classes目录,然后java com.star.dbtest.test就OK了。
      

  4.   

    javac -d . 类名.java
    java com.star.dbtest.类名
      

  5.   

    你进到test类的目录下,直接编译test就行,Logger类会自动编译的