2013-08-03 16 views
6

Ho provato a creare un progetto JavaFX 8 con Netbeans 7.4. Ma sfortunatamente senza fortuna. Questo è il file POM:Costruisci JavaFX 8 con Maven

<?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"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>com.dx57dc</groupId> 
    <artifactId>JFX8M</artifactId> 
    <version>1.0</version> 
    <packaging>jar</packaging> 

    <name>JFX8M</name> 

    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <mainClass>com.dx57dc.jfx8m.MainApp</mainClass> 
    </properties> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-dependency-plugin</artifactId> 
       <version>2.8</version> 
       <executions> 
        <execution> 
         <id>unpack-dependencies</id> 
         <phase>package</phase> 
         <goals> 
          <goal>unpack-dependencies</goal> 
         </goals> 
         <configuration> 
          <excludeScope>system</excludeScope> 
          <excludeGroupIds>junit,org.mockito,org.hamcrest</excludeGroupIds> 
          <outputDirectory>${project.build.directory}/classes</outputDirectory> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 
      <plugin> 
       <groupId>org.codehaus.mojo</groupId> 
       <artifactId>exec-maven-plugin</artifactId> 
       <version>1.2.1</version> 
       <executions> 
        <execution> 
         <id>unpack-dependencies</id> 

         <phase>package</phase> 
         <goals> 
          <goal>exec</goal> 
         </goals> 
         <configuration> 
          <executable>${java.home}/../bin/javafxpackager</executable> 
          <arguments> 
           <argument>-createjar</argument> 
           <argument>-nocss2bin</argument> 
           <argument>-appclass</argument> 
           <argument>${mainClass}</argument> 
           <argument>-srcdir</argument> 
           <argument>${project.build.directory}/classes</argument> 
           <argument>-outdir</argument> 
           <argument>${project.build.directory}</argument> 
           <argument>-outfile</argument> 
           <argument>${project.build.finalName}.jar</argument> 
          </arguments> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>3.1</version> 
       <configuration> 
        <source>1.8</source> 
        <target>1.8</target> 
        <compilerArguments> 
         <bootclasspath>${sun.boot.class.path}${path.separator}${java.home}/lib/jfxrt.jar</bootclasspath> 
        </compilerArguments> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 

</project> 

Quando compilo il file jar eseguirlo con Netbeans 7.3.1 ottengo questo errore:

Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.2.1:exec (unpack-dependencies) on project JFX8M: Command execution failed. Cannot run program "C:\Program Files\Java\jdk1.8.0\jre\..\bin\javafxpackager" (in directory "D:\Documents and Settings\pterzie\My Documents\NetBeansProjects\JFX8M"): CreateProcess error=14001, This application has failed to start because the application configuration is incorrect. Reinstalling the application may fix this problem -> [Help 1] 

Quando compilo il progetto ed eseguirlo sul Netbeans 7.4 I questo errore di stack:

Executing command line: C:\Program Files\Java\jdk1.8.0\jre\..\bin\javafxpackager -createjar -nocss2bin -appclass com.dx57dc.jfx8m.MainApp -srcdir D:\Documents and Settings\pterzie\My Documents\NetBeansProjects\JFX8M\target/classes -outdir D:\Documents and Settings\pterzie\My Documents\NetBeansProjects\JFX8M\target -outfile JFX8M-1.0.jar 
------------------------------------------------------------------------ 
BUILD FAILURE 
------------------------------------------------------------------------ 
Total time: 2.782s 
Finished at: Sat Aug 03 13:25:30 PDT 2013 
Final Memory: 14M/34M 
------------------------------------------------------------------------ 
Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.2.1:exec (unpack-dependencies) on project JFX8M: Command execution failed. Cannot run program "C:\Program Files\Java\jdk1.8.0\jre\..\bin\javafxpackager" (in directory "D:\Documents and Settings\pterzie\My Documents\NetBeansProjects\JFX8M"): CreateProcess error=14001, This application has failed to start because the application configuration is incorrect. Reinstalling the application may fix this problem -> [Help 1] 
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.2.1:exec (unpack-dependencies) on project JFX8M: Command execution failed. 
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:217) 
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) 
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) 
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84) 
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59) 
    at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183) 
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161) 
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320) 
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156) 
    at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537) 
    at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196) 
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:141) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:491) 
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290) 
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230) 
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409) 
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352) 
Caused by: org.apache.maven.plugin.MojoExecutionException: Command execution failed. 
    at org.codehaus.mojo.exec.ExecMojo.execute(ExecMojo.java:367) 
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101) 
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209) 
    ... 19 more 
Caused by: java.io.IOException: Cannot run program "C:\Program Files\Java\jdk1.8.0\jre\..\bin\javafxpackager" (in directory "D:\Documents and Settings\pterzie\My Documents\NetBeansProjects\JFX8M"): CreateProcess error=14001, This application has failed to start because the application configuration is incorrect. Reinstalling the application may fix this problem 
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1043) 
    at java.lang.Runtime.exec(Runtime.java:620) 
    at org.apache.commons.exec.launcher.Java13CommandLauncher.exec(Java13CommandLauncher.java:58) 
    at org.apache.commons.exec.DefaultExecutor.launch(DefaultExecutor.java:254) 
    at org.apache.commons.exec.DefaultExecutor.executeInternal(DefaultExecutor.java:319) 
    at org.apache.commons.exec.DefaultExecutor.execute(DefaultExecutor.java:160) 
    at org.codehaus.mojo.exec.ExecMojo.executeCommandLine(ExecMojo.java:610) 
    at org.codehaus.mojo.exec.ExecMojo.execute(ExecMojo.java:352) 
    ... 21 more 
Caused by: java.io.IOException: CreateProcess error=14001, This application has failed to start because the application configuration is incorrect. Reinstalling the application may fix this problem 
    at java.lang.ProcessImpl.create(Native Method) 
    at java.lang.ProcessImpl.<init>(ProcessImpl.java:386) 
    at java.lang.ProcessImpl.start(ProcessImpl.java:137) 
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1024) 
    ... 28 more 

c'è qualche esempio con Java 8 e Maven che viene realizzato e funziona correttamente?

P.S sono riuscito a farlo funzionare dopo tolgo un plugin. Ho modificato il POM in questo modo:

<?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"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>com.dx57dc</groupId> 
    <artifactId>JFX8M</artifactId> 
    <version>1.0</version> 
    <packaging>jar</packaging> 

    <name>JFX8M</name> 

    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <mainClass></mainClass> 
    </properties> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-dependency-plugin</artifactId> 
       <version>2.8</version> 
       <executions> 
        <execution> 
         <id>unpack-dependencies</id> 
         <phase>package</phase> 
         <goals> 
          <goal>unpack-dependencies</goal> 
         </goals> 
         <configuration> 
          <excludeScope>system</excludeScope> 
          <excludeGroupIds>junit,org.mockito,org.hamcrest</excludeGroupIds> 
          <outputDirectory>${project.build.directory}/classes</outputDirectory> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 
      <plugin> 
       <groupId>com.zenjava</groupId> 
       <artifactId>javafx-maven-plugin</artifactId> 
       <version>2.0</version> 
       <configuration> 
        <mainClass>com.dx57dc.jfx8m.MainApp</mainClass> 
       </configuration> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>3.1</version> 
       <configuration> 
        <source>1.8</source> 
        <target>1.8</target> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 

</project> 

Funziona solo per JVM 8. mi sto perdendo qualcosa di importante nel file POM?

risposta

7

JavaFX 8 fare il lavoro e funziona solo con Java 8.

verificare la corrente tabella di marcia JavaFX anche: http://www.oracle.com/technetwork/java/javafx/overview/roadmap-1446331.html

io non ho avuto alcun problema ottenerlo in esecuzione.

  1. Scaricare e installare JDK8: https://jdk8.java.net/download.html 1.1. essere sicuro che sia l'uno e oonly JDK di default sul sistema, se non sai cosa stai facendo ...
  2. scaricare NetBeans 7.4: https://netbeans.org/downloads
  3. in NetBeans: (File -> Nuovo progetto -> Progetto da Archetype -> "digita sotto javafx" -> "seleziona": javafx-basic-archetype) 3.1. non dimenticare di impostare il nome dell'organizzazione
  4. Scarica &/copia incolla un esempio di classe javaFx 8 &/demo da qualche parte, ad esempio: http://carlfx.wordpress.com/2013/07/15/introduction-by-example-javafx-8-printing/ 4.1. Ora imposta le sorgenti del progetto su 1.8 e utf-8
  5. Pulisci e crea ed eseguilo!
  6. buon divertimento!

Nel caso il vostro stanno avendo difficoltà nel trovare le JavaFX-8-libs con Maven dalla console o con un altro IDE, che si deve impostare il JavaFX-8-lib-path in questo modo:

  1. dovete dire Maven dove il JavaFX-lib è esattamente:

    <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-compiler-plugin</artifactId> 
        <version>3.1</version> 
        <configuration> 
          <!-- this maven plugin does not functions with java 8 yet, passing java 7 is just fine. --> 
         <source>1.7</source> 
         <target>1.7</target> 
         <compilerArguments> 
          <bootclasspath>${sun.boot.class.path}${path.separator}${java.home}/lib/jfxrt.jar</bootclasspath> 
         </compilerArguments> 
        </configuration> 
    </plugin> 
    

** Nota: non c'è bisogno di utilizzare tale archetipo specifico di cui sopra per farlo funzionare ** Niente di veramente brutto, ma la prossima volta basta incollare il delta del contenuto invece di postarlo di nuovo, senza il delta lo sforzo è molto più alto, dal momento che un confronto del file deve essere fatto da ognuno cercando di capire ...