一直在用ECLIPSE 
今天突然在CMD下用javac与java运行程序,出现问题了。
搞不定!TMD基础不行!请各位指点一下!1. 在D:\a\b\c目录下有一文件xin.java
内容如下:package a.b.c;
public class xin{
private String username = "123456";
private String acacac = "testtest";
public static void main(String[] args) {
System.out.println("aaaaaaaaaaaa");
}
}
可以通过javac的编译,可是在运行的时候,报错:
D:\a\b\c>java xin
Exception in thread "main" java.lang.NoClassDefFoundError: xin (wrong name: a/b/c/xin)
        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)
我把xin.java里的package a.b.c;去掉就行执行了。请问这是为什么??2.在d:\java目录下新建了一个文件test.javapublic class test{
public String username = "joejoe";
public String password = "12345";
}编译出了class文件。然后在classpath里添加了;d:\java
然后我在C盘里写了一个类:one.java
public class one {
test t = new test();
}
用javac编译说test找不到符号???就算我给test这个类加上包,也不行
这是怎么回事?
我记的我以前这么做的,可以的啊????

解决方案 »

  1.   

    classpath里 一定 先有一个“点”.;****.lib
      

  2.   

    第一个问题:
    你需要把xin.class文件放在D:\a\b\c目录下,然后在d:\目录下执行 java a.b.c.xin第二个问题:
    你将test和one放在同一个目录试试,或者为test加一个包名,然后再在one中import进来
      

  3.   

    up  
    up
    也学习下
      

  4.   

    回一楼。
    classpath里本来就有“点”的。回二楼你需要把xin.class文件放在D:\a\b\c目录下,然后在d:\目录下执行   java   a.b.c.xin 
    ==============================================================
    可以了!谢谢!你将test和one放在同一个目录试试,或者为test加一个包名,然后再在one中import进来
    ==================================================================
    一开始我在家里就是这么写的。可是报错。
    这下到公司了 我还是这么写!居然没有错了!!!!我靠 
      

  5.   

    1,在编译时采用:javac -d . Xin.java 运行时采用 java a.b.c.Xin 就可以了。
    如果采用 javac Xin.java 编译的话,需要手工建a/b/c目录,把 Xin.class 拷贝进去,
    而采用javac -d . Xin.java编译的,会自动建a/b/c目录的。
    在运行时只能退至 a/b/c 的上层使用完整的类名来运行的。
      

  6.   

    我现在又在家了
    又把第二个问题做了一次
    仍然是报错。
    说软件包 a.b.c 不存在
    怎么回事?我在公司的电脑上同样的代码同样的设置 就没错。!
      

  7.   

    用反射查看生成的Class文件 
    的时候。发现没有包,getPackage返回的是null
    这又是怎么回事啊?我明明加上package a.b.c;了
      

  8.   

    方法是javac   -d   D:   文件名.java 
    这是用于包中,编译后就会产生定义的包,且字节码文件就在包中,运行时就用java   包名.文件名。 
    运行如下:
    D:\>javac -d D: xin.javaD:\>java a.b.c.xin
    aaaaaaaaaaaa
    D:实际就是包放的位置。
      

  9.   

    建立个批处理
    SET CLASSPATH=C:\;%CLASSPATH%;
    SET 
    @rem 上面SET确认真的添加到classpath里面了
    javac one.java
    PAUSE
    测试通过