2012-01-06 81 views
3

我有我的系統設置從命令行編譯jee6代碼(沒有IDE)。我最近試圖編譯一些使用javax.enterprise.context.RequestedScope的代碼。從命令提示符編譯的代碼很好,但是當我試圖使用Maven構建應用程序時,我總是收到javax.enterprise.context包未找到的錯誤。Java從編譯命令行,但不是從Maven

什麼給?我以爲Maven使用的是我使用的相同的javac。爲什麼javac可以找到包但Maven不能?我是否需要添加java包的依賴關係?

或者有什麼方法可以告訴Maven在構建時使用當前的類文件還是在構建時Maven需要編譯?

謝謝。

回答

3

嘗試添加Java EE 6的罐子到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類添加到您的編譯時類路徑。

+0

謝謝雪莉。這似乎是訣竅。 – user1054606 2012-01-06 22:35:54

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