编译时你虽然可以用绝对路径来编译类b,那是因为它没有使用其他的类,当你编译的类要用到其他类时,就必须指明类路径,虽然a,b在同一目录下,你要么就在此目录下用javac(一般classpath都设定了"."),要么指明类路径。 你看看你的情况是不是例如这样: d:\下有a.java和b.java class a{b b1 = new b();} class b{} 而你在其他地方用javac d:\b.java编译通过,但javac d:\a.java不通过,如果是上边的情况,就是classpath的问题。 下边是我的一些测试情况,作为参考: C:\>javac a.java error: cannot read: a.java 1 errorC:\>javac d:\a.java d:\a.java:1: cannot resolve symbol symbol : class b location: class a class a{b b1 = new b();} ^ d:\a.java:1: cannot resolve symbol symbol : class b location: class a class a{b b1 = new b();} ^ 2 errorsC:\>javac b.java error: cannot read: b.java 1 errorC:\>javac d:\b.javaC:\>cd d: D:\C:\>d:D:\>javac b.javaD:\>javac a.javaD:\>
我是在a,b两个文件所在的目录下编译的呀,javac b.java已经过了,在javac a.java的时候,出现类似如下的错误: d:\a.java:1: cannot resolve symbol symbol : class b location: class a class a{b b1 = new b();} ^ d:\a.java:1: cannot resolve symbol symbol : class b location: class a class a{b b1 = new b();} ^ 2 errors
谢了先
可是在编译a类(javac a.java)时,总报错,说不识别变量b?
什么识别变量b?
你是这么写的吗?
b ??? = new b();一定是你在新建b类的对象时出错了,你看一看a.java.
如还有行就把a.java搞上来,把错误信息也搞上来.
其次在同一个目录。
再次import中加入a.java文件。
然后
import b;
在b中
(必须保证a,b在同一目录下)
然后要是你再出错,程序有问题。
语法上正确吗?
你看看你的情况是不是例如这样:
d:\下有a.java和b.java
class a{b b1 = new b();}
class b{}
而你在其他地方用javac d:\b.java编译通过,但javac d:\a.java不通过,如果是上边的情况,就是classpath的问题。
下边是我的一些测试情况,作为参考:
C:\>javac a.java
error: cannot read: a.java
1 errorC:\>javac d:\a.java
d:\a.java:1: cannot resolve symbol
symbol : class b
location: class a
class a{b b1 = new b();}
^
d:\a.java:1: cannot resolve symbol
symbol : class b
location: class a
class a{b b1 = new b();}
^
2 errorsC:\>javac b.java
error: cannot read: b.java
1 errorC:\>javac d:\b.javaC:\>cd d:
D:\C:\>d:D:\>javac b.javaD:\>javac a.javaD:\>
d:\a.java:1: cannot resolve symbol
symbol : class b
location: class a
class a{b b1 = new b();}
^
d:\a.java:1: cannot resolve symbol
symbol : class b
location: class a
class a{b b1 = new b();}
^
2 errors