Java 未找到包;爪哇语

Java 未找到包;爪哇语,java,javac,Java,Javac,这很烦人 我有一个这样的目录结构 -lib --some jar files -packageName --Main.java --SomeOtherPackage --SomeOtherJavaClass.java Main.java导入SomeOtherPackage。两个java文件都在库中使用JAR 我要做的是在类路径中独立添加jar文件。然后运行为: javac packageName/Main.java 但它给出的错误是未找到包SomeOtherPa

这很烦人

我有一个这样的目录结构

-lib
   --some jar files

-packageName
   --Main.java
   --SomeOtherPackage
      --SomeOtherJavaClass.java
Main.java导入
SomeOtherPackage
。两个java文件都在库中使用JAR

我要做的是在类路径中独立添加jar文件。然后运行为: javac packageName/Main.java

但它给出的错误是未找到包
SomeOtherPackage
。难道它不应该自动实现依赖性并构建
SomeOtherPackage
?对于上述情况,javac命令和类路径是什么


谢谢

您需要将packageName添加到类路径,以便它可以找到其他包

通常的做法是将包根添加到类路径

当您已经在包根目录中时,请使用
-cp.
。例如

cd /path/to/all/packages
javac -cp . packageName/Main.java
如果还想包含JAR文件,请使用
(或在*nix中,
)作为类路径分隔符:

javac -cp .;lib/file.jar packageName/Main.java

要节省重复输入所有shell命令的时间,请使用
.bat
(或*nix a
.sh
)文件。或者,如果您已经熟悉java/javac等等,就只需要一个IDE。

当您说Main导入其他包时,import命令看起来像什么导入packageName.SomeOtherPackage’或者它看起来像‘导入SomeOtherPackage’?对不起,佩斯,你是对的,它是导入packageName.SomeOtherPackage。我没有写代码,再次抱歉。啊哈,这意味着我需要在类路径中添加所有子目录/子包..这不是有点太乏味了吗?不,你只需要添加所有包含顶级包目录的目录。由于SomeOtherPackage不是packageName的子包,因此需要直接添加包含SomeOtherPackage的目录这是最好的方法。但是,除非将导入行更改为import packageName.SomeOtherPackage,否则它将不起作用;通常,如果两个包不在同一个项目中构建,那么它们应该具有不同的根目录。换句话说,您应该有src/packageName和src/SomeOtherPackage,然后将src/packageName和src/SomeOtherPackage放在类路径中。如果它们在同一个项目中,则应修改导入语句以反映这一点。导入语句应该始终是从源代码根开始的绝对路径。我运行了javac-cp。;lib/packageName/Main.java,但它只创建了Main.java的.class文件,没有对其他包做任何操作。正如我在问题中提到的,它不应该找到依赖项本身并创建它们的类吗?我不这么认为。它将只编译给定的.java文件。如果您想编译整个项目,可能是时候切换到Ant了,但有多种方法可以指定多个源文件。实际上,要编译/构建多个类,请使用Ant之类的工具或Eclipse/IntelliJ/Netbeans之类的IDE。