javac:编译使用其他类的.java文件

15

嗨,我有3个Java文件

a.java  
b.java  
c.java  

我成功地通过以下方式为a和b生成了.class文件

javac example/a.java  
javac example/b.java  

但是当我对c.java做同样的操作时,出现了错误:error: cannot find symbol b and c。

你有什么建议可以解决这个问题吗?

所有的Java文件都在同一个文件夹中。


2
你想给我们展示一下 c.java 的代码吗? - MByD
实际上,a和b是假设,c实际上是Order.java。这是代码。Customer、Address、Shipping和Item是其他对象,编译没有任何问题。由于我无法在此处粘贴代码,因此我将代码发布在[链接](http://www.coderanch.com/t/580168/java/java/javac-Compiling-JAVA-file-which#2638811)。 - Rajeshwar
相关链接:Java启动器如何查找用户类 - Jason Law
2个回答

23

在尝试编译类c时,你必须在类路径中拥有ab类。这样可以让编译器验证它们的存在,找出它们拥有哪些方法等等。

javac对包名称和类路径非常敏感。最简单的做法是像下面这样同时编译这三个类:javac example/a.java example/b.java example/c.java

如果你进入example的父目录(我们称之为src),那么你可以运行以下命令:

javac -cp src src/example/c.java

你需要这样做的原因是因为你的类将其包名列为example。由于你的包名,javac在其类路径中寻找example目录,期望在其中找到a.classb.class


java -cp example c.java(语法和路径无效) - Rajeshwar
2
javac example/a.java example/b.java example/c.java 或者 javac *.java 都可以工作。 - Rajeshwar

2

可能您在运行javac命令时不在example/目录下。请尝试:

javac -cp example c.java

或者只需 cd 到该目录。类路径不会自动解析 c.java 中依赖的类。


1
如果他的包是一个例子,那可能会出现问题。 - user1241335
@Amir Afghani,请查看此链接的最后一篇帖子:http://www.coderanch.com/t/580168/java/java/javac-Compiling-JAVA-file-which#2638812 - Rajeshwar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接