Java 源代码在我放入包中后不会立即编译?



我在Archlinux桌面上安装了Maven。我有一个令人困惑的问题。

遵循入门指南并安装Maven,最后我将默认公司设置为Zerovector(而不是My-Company。)因此,目录结构(和软件包)看起来像这样: src/com/zerovector/app (or com.zerovector.app)

应用程序只是说"Hello World"MVN编译失败。MVN构建失败。我尝试运行时NoClassDefFound错误Maven流程的产物。试图用NoClassDefFound手动编译(javac App.java)失败。一旦我删除了package com.zerovector.app;线,突然就会编译并起作用。我可以去javac App.java,并且可以很好地编译到App.class中(简单的Hello World Prog。)而且此App.class确实是"Hello World",然后恢复正常。

为什么包装线将Java投掷到一堆非潜水器中?我可以解决这个问题还是我将必须手动编码/组织并忘记Maven和软件包?

使用Maven,Java类代码应在src/main/java/com/zerovector/app目录中,而不在src/com/zerovector/app中。如果您不想使用默认源目录,则必须更改配置。

如果您使用javac,则不要将当前目录更改为src/main/java/com/zerovector/app,但请留在源根目录中:

 cd src/main/java
 javac com/zerovector/app/App.java

如果您遵循此规则,则包裹声明和Java源文件匹配的相对路径以及一切都起作用。如果将当前目录更改为Java源文件所在的位置,则编译器期望没有包(=默认包):

cd src/main/java/com/zerovector/app/
javac App.java

最新更新