有关多个文件编译和package

braveheart2000 2003-09-12 03:29:34
我在f:\java\test下有两个java文件 一个是test1.java 另一个是test2.java
程序如下:
//test1.java

class test1 {

String s = "abc";
}

//test2.java

class test2 {

int a;
test1 t1 = new test1();
}

我编译test2却怎么也编译不通过说找不到test1.java我是在同一个目录下呀

问题2 如果我想把f:\java\test下的class文件做一个包 请问package该如何写
可以写成package f.java.test.*;吗 或者写成package java.test.*;这个和java本身的类库有没有冲突。打了包以后我在别的程序里要用如何import 假设我设了环境变量f:;
我可以import java.test.*;吗,请教大虾!!!!
...全文
230 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
fft123 2003-09-15
  • 打赏
  • 举报
回复
还有你的程序没有main方法
编译通过了也不能运行的

我刚才先javac -d c:\ test1.java编译你的test1.java
classpath我没改,我把test2.java拷贝到c:\下,编译可以通过
fft123 2003-09-15
  • 打赏
  • 举报
回复
应该是不会报错的
你用javac之前,先输入set classpath看看你的classpath里是否有C:\这个classpath
没有的话要重起cmd窗口的
braveheart2000 2003-09-15
  • 打赏
  • 举报
回复
我弄出来了,为什么我一个一个文件编译就不行,我把test1.class生成出来了为什么编译test2.java还是不行,但是javac *.java却是可以的

这个已经解决了,是因为我的环境变量中没有加入.;当前路径这个变量一加就好了

我在f:\javatest\test下的两个文件
//test1.java
package javatest.test;
import java.io.*;
public class test1 {

String s = "abc";
}
//test2.java
import javatest.test.*;
import java.io.*;
public class test2 {

String s2 = "abc";
test1 t1 = new test1();
}
我用javac -d c:\ test1.java把生成的包放在c盘根目录下,这是可以的,编译后生成了c:\javatest\test\test1.class
现在我编译test2.java是这样写的javac test2.java而且我在classpath中已经加入了c:\这个路径,编译时怎么报错,找不到test1.class,麻烦高手解决一下,谢谢!!!!
braveheart2000 2003-09-15
  • 打赏
  • 举报
回复
谢谢楼上的朋友我结帐了
accpsh 2003-09-15
  • 打赏
  • 举报
回复
代码改成如下
package test1;

class test1 {

String s = "abc";
}

import test1.*;
class test2 {

int a;
test1 t1 = new test1();
}

指定目录不可能的。。在JAVA书写中不行的。。
fft123 2003-09-15
  • 打赏
  • 举报
回复
这个和classpath无关,是import时出的错
把import语句改成:import javatest.test.test1;
或者你调用test1的时候,这样调用:
javatest.test.test1 t1 = new javatest.test.test1();

出这个问题的原因是:你的当前目录下,有以test1.java或test1.class文件,把这两个文件删掉就可以编译通过
不删的话,编译器寻找时,好像首先寻找的是当前目录,找到的第一个以test1为文件名的文件,就当做需要的文件来用,所以就会报错。
braveheart2000 2003-09-15
  • 打赏
  • 举报
回复
楼上的方法我试了一下是可以的,但是如果我把程序编译到c:\sjh 下 javac -d c:\sjh\ test1.java 我在classpath中加了c:\sjh;是可以编译的,但是如果我classpath中加一个当前路径.;
就是classpath = .; c:\sjh;或者 classpath = c:\sjh; .;就无法编译
但是如果不加 [ .; ] 当前路径的话我的同一个目录下的文件如果类A中有类B,编译了b以后却无法编译a除非 javac *.java,不能一个一个的编译,请问classpath应该如何书写
violetblue 2003-09-12
  • 打赏
  • 举报
回复
用JBuilder为什么不行?
braveheart2000 2003-09-12
  • 打赏
  • 举报
回复
我弄出来了,为什么我一个一个文件编译就不行,我把test1.class生成出来了为什么编译test2.java还是不行,但是javac *.java却是可以的

还有一个问题我可以做一个包,但不是楼上的朋友说的在java文件建立一个路径我可不可以指定一个目录来放class文件作为包的名字 例如 f:/xuexi/myjava下,我在我的test1.java中package该如何书写呢?
fft123 2003-09-12
  • 打赏
  • 举报
回复
还有如果你的java1.java是加了package的话
要按照你的package来建立相应的目录
如java1.java里的package是pakeage youpakeage.test
就要在你的test2.java文件所在的目录下建立youpakeage\test这样的目录
然后把java1.class(是编译后的class文件)放到test目录下
这样你的test2.java才能编译通过

像这样多个class相互引用时,最好的方法是同时编译
编译时用如下命令:javac -d . *.java
-d是告诉编译器自动按包名建立相应目录
.是告诉目录建立在当前目录下,可以改成其它的目录
fft123 2003-09-12
  • 打赏
  • 举报
回复
在classpath里加上“.”
violetblue 2003-09-12
  • 打赏
  • 举报
回复
我也遇到了同样的问题
真是头疼,挺简单的事儿,不知道这些编译器怎么搞得
braveheart2000 2003-09-12
  • 打赏
  • 举报
回复
我照楼上的大哥去做而且在系统的classpath里加了f:/youpackage怎么还是不好编译test2.java
但是java1.java已经编译好了 在编译test2.java时还出现了找不到包的错误
yangFrame 2003-09-12
  • 打赏
  • 举报
回复
在编译test2.java之前要保证test1.java便宜成test.class

假设你test1.java放在f:/youpakeage/test/下
//test1.java
pakeage youpakeage.test;
public class test1
{
String s = "abc";
}

//test2.java
import youpakeage.test.*;
public class test2 {
int a;
test1 t1 = new test1();
}
当然你要设置以下类路径
braveheart2000 2003-09-12
  • 打赏
  • 举报
回复
public class test1 {

String s = "abc";
}

//test2.java

public class test2 {

int a;
test1 t1 = new test1();
}
这两个文件在同一个目录下的,怎么test2.java编译通不过
我要做个pakeage再做个程序来import这个包该怎么做,能不能给个例子,小弟有礼了
cadwolf 2003-09-12
  • 打赏
  • 举报
回复
public
fft123 2003-09-12
  • 打赏
  • 举报
回复
1.编译时可以javac *.java这样编译
2.java文件的第一行加上package test;
不能加星号
最好自己起包名,否则碰到与标准类库同名的时候会有冲突
不明白你的环境变量f是什么意思
你加了包名后,其它class使用就要import,就像你最后写的那样import test.*;
yangFrame 2003-09-12
  • 打赏
  • 举报
回复
package java.test;
从1.2开始,sdk拒绝以"java."开始的包
你还是换个名字把
xutaiqing520 2003-09-12
  • 打赏
  • 举报
回复
1.当你编译test2.java时,一定要把test1.class和test2.java文件放到同一个文件夹下,才能正常编译test2.java,否则就会报你碰到的这个问题。

62,612

社区成员

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

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