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
------解决方案-------------------- 探讨 修饰符的问题