2013-09-25 137 views
8

我有一個Java FX項目,並使用maven 3.0.5來構建。當我運行mvn package/install時,項目失敗並且抱怨包javafx。 *不存在。爲了我的理解,Javafx被打包在Java 1.7中,所以沒有意義的是構建不會選擇它。當我在我的IDE(intellij)中編譯它時,它工作正常,之後我的Maven構建也成功安裝,但是我不希望每次執行乾淨安裝時都要通過IDE。有任何想法嗎?Javafx項目不能用maven編譯

這裏是我的POM:

<?xml version="1.0" encoding="UTF-8"?> 
<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/xsd/maven-4.0.0.xsd"> 
    <parent> 
     <artifactId>thenaglecode</artifactId> 
     <groupId>com.thenaglecode</groupId> 
     <version>1.0.0.Pre-Alpha</version> 
    </parent> 
    <modelVersion>4.0.0</modelVersion> 

    <artifactId>system-setup</artifactId> 

    <dependencies> 
     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-api</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.commons</groupId> 
      <artifactId>commons-vfs2</artifactId> 
      <version>2.0</version> 
     </dependency> 
     <dependency> 
      <groupId>commons-io</groupId> 
      <artifactId>commons-io</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.commons</groupId> 
      <artifactId>commons-lang3</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>commons-collections</groupId> 
      <artifactId>commons-collections</artifactId> 
     </dependency> 
    </dependencies> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-resources-plugin</artifactId> 
       <version>2.6</version> 
       <configuration> 
        <includeEmptyDirs>true</includeEmptyDirs> 
       </configuration> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
      </plugin> 
      <plugin> 
       <groupId>com.akathist.maven.plugins.launch4j</groupId> 
       <artifactId>launch4j-maven-plugin</artifactId> 
       <version>1.5.2</version> 
       <executions> 
        <execution> 
         <phase>package</phase> 
         <goals> 
          <goal>launch4j</goal> 
         </goals> 
         <configuration> 
          <headerType>gui</headerType> 
          <jre> 
           <path>C:\Program Files\Java\jre7</path> 
           <minVersion>1.7.0</minVersion> 
           <initialHeapSize>128</initialHeapSize> 
           <maxHeapSize>1024</maxHeapSize> 
          </jre> 
          <jar>${project.build.directory}/${project.build.finalName}.jar</jar> 
          <outfile>${project.build.directory}/systemsetup.exe</outfile> 
          <classPath> 
           <mainClass>com.thenaglecode.Start</mainClass> 
          </classPath> 
          <singleInstance> 
           <mutexName>thenaglecode-system-setup</mutexName> 
          </singleInstance> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 
     </plugins> 
    </build> 

</project> 

這裏是我的日誌:

[ERROR] COMPILATION ERROR : 
[INFO] ------------------------------------------------------------- 
[ERROR] /C:/Users/Macindows/IdeaProjects/thenaglecode/system-setup/src/main/java/com/thenaglecode/CommandHelper.java:[3,26] package javafx.application does not exist 
[ERROR] /C:/Users/Macindows/IdeaProjects/thenaglecode/system-setup/src/main/java/com/thenaglecode/ListAndOptionsController.java:[3,26] package javafx.beans.value does not exist 
[ERROR] /C:/Users/Macindows/IdeaProjects/thenaglecode/system-setup/src/main/java/com/thenaglecode/ListAndOptionsController.java:[4,26] package javafx.beans.value does not exist 
[ERROR] /C:/Users/Macindows/IdeaProjects/thenaglecode/system-setup/src/main/java/com/thenaglecode/ListAndOptionsController.java:[5,26] package javafx.collections does not exist 
[ERROR] /C:/Users/Macindows/IdeaProjects/thenaglecode/system-setup/src/main/java/com/thenaglecode/ListAndOptionsController.java:[6,20] package javafx.event does not exist 
[ERROR] /C:/Users/Macindows/IdeaProjects/thenaglecode/system-setup/src/main/java/com/thenaglecode/ListAndOptionsController.java:[7,20] package javafx.event does not exist 
... 
[ERROR] /C:/Users/Macindows/IdeaProjects/thenaglecode/system-setup/src/main/java/com/thenaglecode/Context.java:[3,28] package javafx.scene.control does not exist 
[ERROR] /C:/Users/Macindows/IdeaProjects/thenaglecode/system-setup/src/main/java/com/thenaglecode/ServiceMuncher.java:[3,31] package com.sun.istack.internal does not exist 
[ERROR] /C:/Users/Macindows/IdeaProjects/thenaglecode/system-setup/src/main/java/com/thenaglecode/TypeInfo.java:[3,31] package com.sun.istack.internal does not exist 
[ERROR] /C:/Users/Macindows/IdeaProjects/thenaglecode/system-setup/src/main/java/com/thenaglecode/NumericOnlyTextFieldChangeListener.java:[3,31] package com.sun.istack.internal does not exist 
[ERROR] /C:/Users/Macindows/IdeaProjects/thenaglecode/system-setup/src/main/java/com/thenaglecode/NumericOnlyTextFieldChangeListener.java:[4,26] package javafx.beans.value does not exist 
[ERROR] -> [Help 1] 
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. 
[ERROR] Re-run Maven using the -X switch to enable full debug logging. 
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles: 
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException 

Process finished with exit code 1 

謝謝您的幫助。

+0

很是煩人:http://stackoverflow.com/questions/9294646/javafx-2-as-a-maven-dependency - 工作正常使用JavaFX 8 .. 。 – assylias

+0

[Maven項目與JavaFX(在''lib \'中有jar文件)]的可能的重複](http://stackoverflow.com/questions/15278215/maven-project-with-jav AFX-與-JAR文件功能於LIB) – jewelsea

回答

7

的依賴將這個(取決於你的JDK是),將幫助依賴編譯,但是你應該有一個變量替換它,用戶可以在他們的settings.xml或Maven系統屬性指定:

<dependency> 
     <groupId>com.oracle</groupId> 
     <artifactId>javaFX</artifactId> 
     <version>2.2</version> 
     <scope>system</scope> 
     <systemPath>C:\Program Files\Java\jre7\lib\jfxrt.jar</systemPath> 
    </dependency> 

看到Maven project with JavaFX (with jar file in `lib`)更多細節,爲什麼