日期:2014-05-20  浏览次数:20620 次

java包的问题
test.java 
package ch1;
class test{
  int i;
}
test1.java
package ch1;
import ch1.*;
public class test1{
test n=new test();
System.out.println(n.i);
}
}将这两个java文件产生的字节码文件放在ch1中,为什么时候运行的时候 老是出错呀?classpath应如何设置?

------解决方案--------------------
1.你是怎么编译的?
2.你是怎么运行的?
3.报什么错?

问题现象要说清楚。
------解决方案--------------------
n.i 出的错,不是同一个包下,是访问不到默认修饰符修饰的变量的
------解决方案--------------------
把test定义为public
------解决方案--------------------
test.java是一个单独的类,还是写在test.java中的,你两个类都有包,应该是两个单独的类,要是单独的类就应该这样写


test.java 

package ch1; 
public class test{ 
int i; 
}
------解决方案--------------------
探讨
test.java 和test1.java都放在同一个目录 下的,首先用javac test.java -d . 字节码文件自动产生在ch1文件夹下,javac -classpath . test1.java -d . 然后用java test1 编译就老是出错!麻烦各位了,在帮我看看!

------解决方案--------------------
修饰符的问题
------解决方案--------------------
探讨
引用:
test.java 和test1.java都放在同一个目录 下的,首先用javac test.java -d . 字节码文件自动产生在ch1文件夹下,javac -classpath . test1.java -d . 然后用java test1 编译就老是出错!麻烦各位了,在帮我看看!

1.java test1 这个不叫编译,这个叫运行,javac才是编译
2.java后面要跟完整的类名,也就是说你要写成javac ch1.test1
3.test1.java里没有main函数,你那样写应该编译就出错,应该写成
Java codepackage ch1;publicclass test1{publicstaticvoid main(String[] args) {
test n=new test();
System.out.println(n.i);
}
}
4.代码不规范,类名应该用大些字母大头,Test、Test1,而不是test、test1;不要直接n.i这样访问变量,test类里要写get方法,其他类通过get方法访问test的i变量;声明i的时候最好初始化一下,虽然不显示的初始化java也会给个默认值0

------解决方案--------------------
探讨
修饰符的问题