我的系统设置为从命令行编译jee6代码(没有IDE)。我最近尝试编译一些使用javax.enterprise.context.RequestedScope的代码。从命令提示符编译好的代码,但是当我尝试使用Maven构建应用程序时,我一直收到javax.enterprise.context包找不到错误。
是什么给出的?我以为Maven正在使用我正在使用的javac。为什么javac可以找到包,但Maven不能?我是否需要为java包添加依赖项?
或者......有没有办法告诉Maven在构建时使用当前的类文件,还是Maven在构建时必须编译?
感谢。
答案 0 :(得分:3)
尝试将Java EE 6 jar添加到Maven依赖项中:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
. . .
<dependencies>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>6.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
</project>
这会将Java EE类添加到编译时类路径中。
答案 1 :(得分:0)
要使用Maven编译代码,您需要告诉它在哪里可以找到所需的组件。
看起来您需要将其添加到依赖项中:
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-endorsed-api</artifactId>
<version>6.0</version>
<scope>provided</scope>
</dependency>
请注意<scope>
元素。它告诉Maven不要将此依赖项与您的工件捆绑在一起,因为在运行时它将由应用程序容器提供。
关于它从命令行编译的原因。
您可能在命令行-cp
选项或全局CLASSPATH
变量中具有所需的jar文件。
Maven,按照设计,不关注全球CLASSPATH
。