我在我的archlinux桌面上安装了Maven。 我有一个令人困惑的问题。
在入门指南和安装Maven之后,最后一切
我将默认公司设置为zerovector(而不是my-company。)
所以目录结构(和包)看起来像这样:
src/com/zerovector/app (or com.zerovector.app)
应用只是说"Hello World"
mvn编译失败。 mvn构建失败。我尝试运行时出现NoClassDefFound
错误
Maven流程的产物。
尝试手动编译(javac App.java)
会导致NoClassDefFound
失败。
一旦我删除package com.zerovector.app;
行突然它编译并工作。
我可以去javac App.java
并且它可以很好地编译成App.class
(简单的Hello World prog。)
这个App.class
确实很小"Hello World"
并退出正常。
为什么包行为了一堆无意义而抛出java?我可以解决这个问题吗? 我将不得不手动编码/组织并忘记Maven和包?
答案 0 :(得分:0)
使用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源文件所在的位置,则编译器不需要包(= default package):
cd src/main/java/com/zerovector/app/
javac App.java