基础问题

joejoe1991 2008-01-08 10:14:47
一直在用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.java

public 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这个类加上包,也不行
这是怎么回事?
我记的我以前这么做的,可以的啊????
...全文
176 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
sunyujia 2008-01-09
  • 打赏
  • 举报
回复
建立个批处理
SET CLASSPATH=C:\;%CLASSPATH%;
SET
@rem 上面SET确认真的添加到classpath里面了
javac one.java
PAUSE
测试通过
kimi_jw 2008-01-09
  • 打赏
  • 举报
回复
学习一下,顶起
joejoe1991 2008-01-09
  • 打赏
  • 举报
回复
是重开的控制台
  • 打赏
  • 举报
回复
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 的上层使用完整的类名来运行的。
lihaifeng0412 2008-01-09
  • 打赏
  • 举报
回复
学习
believefym 2008-01-09
  • 打赏
  • 举报
回复
第二个问题,你环境变量设置过之后有没有重新开个控制台?
haoyangguang 2008-01-09
  • 打赏
  • 举报
回复
方法是javac -d D: 文件名.java
这是用于包中,编译后就会产生定义的包,且字节码文件就在包中,运行时就用java 包名.文件名。
运行如下:
D:\>javac -d D: xin.java

D:\>java a.b.c.xin
aaaaaaaaaaaa
D:实际就是包放的位置。
joejoe1991 2008-01-09
  • 打赏
  • 举报
回复
回一楼。
classpath里本来就有“点”的。

回二楼

你需要把xin.class文件放在D:\a\b\c目录下,然后在d:\目录下执行 java a.b.c.xin
==============================================================
可以了!谢谢!

你将test和one放在同一个目录试试,或者为test加一个包名,然后再在one中import进来
==================================================================
一开始我在家里就是这么写的。可是报错。
这下到公司了 我还是这么写!居然没有错了!!!!我靠 。。。
joejoe1991 2008-01-09
  • 打赏
  • 举报
回复
用反射查看生成的Class文件
的时候。发现没有包,getPackage返回的是null
这又是怎么回事啊?我明明加上package a.b.c;了
joejoe1991 2008-01-09
  • 打赏
  • 举报
回复
我现在又在家了
又把第二个问题做了一次
仍然是报错。
说软件包 a.b.c 不存在
怎么回事?我在公司的电脑上同样的代码同样的设置 就没错。!
isk_java 2008-01-09
  • 打赏
  • 举报
回复
楼上正解!
goodmrning 2008-01-08
  • 打赏
  • 举报
回复
up
up
也学习下
huoyin 2008-01-08
  • 打赏
  • 举报
回复
第一个问题:
你需要把xin.class文件放在D:\a\b\c目录下,然后在d:\目录下执行 java a.b.c.xin

第二个问题:
你将test和one放在同一个目录试试,或者为test加一个包名,然后再在one中import进来
healer_kx 2008-01-08
  • 打赏
  • 举报
回复
classpath里 一定 先有一个“点”

.;****.lib

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧