JavaFX/Maven应用程序运行但它不显示

问题描述:

我的应用程序(JavaFX - Java 8)使用REST服务并需要Jersey库(2.17)。 Depedencies由Maven的管理,这是我的pom.xml:JavaFX/Maven应用程序运行但它不显示

<dependencies> 
     <dependency> 
      <groupId>org.glassfish.hk2.external</groupId> 
      <artifactId>aopalliance-repackaged</artifactId> 
      <version>2.4.0-b10</version> 
     </dependency> 
     <dependency> 
      <groupId>org.ow2.asm</groupId> 
      <artifactId>asm-debug-all</artifactId> 
      <version>5.0.2</version> 
     </dependency> 
     <dependency> 
      <groupId>org.glassfish.hk2</groupId> 
      <artifactId>hk2-api</artifactId> 
      <version>2.4.0-b10</version> 
     </dependency> 
     <dependency> 
      <groupId>org.glassfish.hk2</groupId> 
      <artifactId>hk2-locator</artifactId> 
      <version>2.4.0-b10</version> 
     </dependency> 
     <dependency> 
      <groupId>org.glassfish.hk2</groupId> 
      <artifactId>hk2-utils</artifactId> 
      <version>2.4.0-b10</version> 
     </dependency> 
     <dependency> 
      <groupId>org.javassist</groupId> 
      <artifactId>javassist</artifactId> 
      <version>3.18.1-GA</version> 
     </dependency> 
     <dependency> 
      <groupId>javax.annotation</groupId> 
      <artifactId>javax.annotation-api</artifactId> 
      <version>1.2</version> 
     </dependency> 
     <dependency> 
      <groupId>org.glassfish.hk2.external</groupId> 
      <artifactId>javax.inject</artifactId> 
      <version>2.4.0-b10</version> 
     </dependency> 
     <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>javax.servlet-api</artifactId> 
      <version>3.0.1</version> 
     </dependency> 
     <dependency> 
      <groupId>javax.ws.rs</groupId> 
      <artifactId>javax.ws.rs-api</artifactId> 
      <version>2.0.1</version> 
     </dependency> 
     <dependency> 
      <groupId>javax.xml.bind</groupId> 
      <artifactId>jaxb-api</artifactId> 
      <version>2.2.7</version> 
     </dependency> 
     <dependency> 
      <groupId>org.glassfish.jersey.core</groupId> 
      <artifactId>jersey-client</artifactId> 
      <version>2.17</version> 
     </dependency> 
     <dependency> 
      <groupId>org.glassfish.jersey.core</groupId> 
      <artifactId>jersey-common</artifactId> 
      <version>2.17</version> 
     </dependency> 
     <dependency> 
      <groupId>org.glassfish.jersey.containers</groupId> 
      <artifactId>jersey-container-servlet</artifactId> 
      <version>2.17</version> 
     </dependency> 
     <dependency> 
      <groupId>org.glassfish.jersey.containers</groupId> 
      <artifactId>jersey-container-servlet-core</artifactId> 
      <version>2.17</version> 
     </dependency> 
     <dependency> 
      <groupId>org.glassfish.jersey.bundles.repackaged</groupId> 
      <artifactId>jersey-guava</artifactId> 
      <version>2.17</version> 
     </dependency> 
     <dependency> 
      <groupId>org.glassfish.jersey.media</groupId> 
      <artifactId>jersey-media-jaxb</artifactId> 
      <version>2.17</version> 
     </dependency> 
     <dependency> 
      <groupId>org.glassfish.jersey.core</groupId> 
      <artifactId>jersey-server</artifactId> 
      <version>2.17</version> 
     </dependency> 
     <dependency> 
      <groupId>org.osgi</groupId> 
      <artifactId>org.osgi.core</artifactId> 
      <version>4.2.0</version> 
     </dependency> 
     <dependency> 
      <groupId>org.glassfish.hk2</groupId> 
      <artifactId>osgi-resource-locator</artifactId> 
      <version>1.0.1</version> 
     </dependency> 
     <dependency> 
      <groupId>javax.persistence</groupId> 
      <artifactId>persistence-api</artifactId> 
      <version>1.0</version> 
     </dependency> 
     <dependency> 
      <groupId>javax.validation</groupId> 
      <artifactId>validation-api</artifactId> 
      <version>1.1.0.Final</version> 
     </dependency> 
    </dependencies> 

    <properties> 
     <maven_compiler_source>1.8</maven_compiler_source> 
     <maven_compiler_target>1.8</maven_compiler_target> 
    </properties> 

    <build> 
     <plugins> 
      <plugin> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>3.1</version> 
       <configuration> 
        <source>1.8</source> 
        <target>1.8</target> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 

当我运行该应用程序,它运行没有错误或警告(我可以看到在Eclipse控制台清晰的输出),我从CMD的运行看到错误,但没有人。该应用程序运行(可以看到该进程),但不显示。

也许JavaFX和Maven的不兼容?我应该创建一个JavaFX项目,而不是Maven项目?如果我有,我怎么可以添加一个文件夹lib而不是所有的JAR直接?

我很感激任何帮助。

+0

检查该JVM的日志文件。应该告诉你一些事情。 – StackFlowed 2015-04-03 15:27:51

+0

感谢您的回答。它看起来像Maven与JavaFX不兼容。 – 2015-04-03 16:11:36

溶液只添加几行:

只需添加主类:

<main.class>me.localtest.views.Main</main.class> 

并添加的Maven插件包:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-jar-plugin</artifactId> 
    <version>2.4</version> 
    <configuration> 
     <archive> 
      <manifest> 
       <addClasspath>true</addClasspath> 
       <mainClass>${main.class}</mainClass> 
      </manifest> 
     </archive> 
    </configuration> 
</plugin> 

pom.xml中是这样的:

<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>me.localtest</groupId> 
    <artifactId>CustomersAppClient</artifactId> 
    <version>0.0.1</version> 
    <name>CustomersAppClient</name> 

    <dependencies> 
     <dependency> 
      <groupId>org.glassfish.hk2.external</groupId> 
      <artifactId>aopalliance-repackaged</artifactId> 
      <version>2.4.0-b10</version> 
     </dependency> 
     <dependency> 
      <groupId>org.ow2.asm</groupId> 
      <artifactId>asm-debug-all</artifactId> 
      <version>5.0.2</version> 
     </dependency> 
     <dependency> 
      <groupId>org.glassfish.hk2</groupId> 
      <artifactId>hk2-api</artifactId> 
      <version>2.4.0-b10</version> 
     </dependency> 
     <dependency> 
      <groupId>org.glassfish.hk2</groupId> 
      <artifactId>hk2-locator</artifactId> 
      <version>2.4.0-b10</version> 
     </dependency> 
     <dependency> 
      <groupId>org.glassfish.hk2</groupId> 
      <artifactId>hk2-utils</artifactId> 
      <version>2.4.0-b10</version> 
     </dependency> 
     <dependency> 
      <groupId>org.javassist</groupId> 
      <artifactId>javassist</artifactId> 
      <version>3.18.1-GA</version> 
     </dependency> 
     <dependency> 
      <groupId>javax.annotation</groupId> 
      <artifactId>javax.annotation-api</artifactId> 
      <version>1.2</version> 
     </dependency> 
     <dependency> 
      <groupId>org.glassfish.hk2.external</groupId> 
      <artifactId>javax.inject</artifactId> 
      <version>2.4.0-b10</version> 
     </dependency> 
     <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>javax.servlet-api</artifactId> 
      <version>3.0.1</version> 
     </dependency> 
     <dependency> 
      <groupId>javax.ws.rs</groupId> 
      <artifactId>javax.ws.rs-api</artifactId> 
      <version>2.0.1</version> 
     </dependency> 
     <dependency> 
      <groupId>javax.xml.bind</groupId> 
      <artifactId>jaxb-api</artifactId> 
      <version>2.2.7</version> 
     </dependency> 
     <dependency> 
      <groupId>org.glassfish.jersey.core</groupId> 
      <artifactId>jersey-client</artifactId> 
      <version>2.17</version> 
     </dependency> 
     <dependency> 
      <groupId>org.glassfish.jersey.core</groupId> 
      <artifactId>jersey-common</artifactId> 
      <version>2.17</version> 
     </dependency> 
     <dependency> 
      <groupId>org.glassfish.jersey.containers</groupId> 
      <artifactId>jersey-container-servlet</artifactId> 
      <version>2.17</version> 
     </dependency> 
     <dependency> 
      <groupId>org.glassfish.jersey.containers</groupId> 
      <artifactId>jersey-container-servlet-core</artifactId> 
      <version>2.17</version> 
     </dependency> 
     <dependency> 
      <groupId>org.glassfish.jersey.bundles.repackaged</groupId> 
      <artifactId>jersey-guava</artifactId> 
      <version>2.17</version> 
     </dependency> 
     <dependency> 
      <groupId>org.glassfish.jersey.media</groupId> 
      <artifactId>jersey-media-jaxb</artifactId> 
      <version>2.17</version> 
     </dependency> 
     <dependency> 
      <groupId>org.glassfish.jersey.core</groupId> 
      <artifactId>jersey-server</artifactId> 
      <version>2.17</version> 
     </dependency> 
     <dependency> 
      <groupId>org.osgi</groupId> 
      <artifactId>org.osgi.core</artifactId> 
      <version>4.2.0</version> 
     </dependency> 
     <dependency> 
      <groupId>org.glassfish.hk2</groupId> 
      <artifactId>osgi-resource-locator</artifactId> 
      <version>1.0.1</version> 
     </dependency> 
     <dependency> 
      <groupId>javax.persistence</groupId> 
      <artifactId>persistence-api</artifactId> 
      <version>1.0</version> 
     </dependency> 
     <dependency> 
      <groupId>javax.validation</groupId> 
      <artifactId>validation-api</artifactId> 
      <version>1.1.0.Final</version> 
     </dependency> 
    </dependencies> 

    <properties> 
     <maven_compiler_source>1.8</maven_compiler_source> 
     <maven_compiler_target>1.8</maven_compiler_target> 
     <!-- name of the jar --> 
     <jar.final.name>CustomersApp</jar.final.name> 
     <!-- class name --> 
     <main.class>me.localtest.views.Main</main.class> 
    </properties> 

    <build> 
     <finalName>${jar.final.name}</finalName> 
     <plugins> 
      <plugin> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>3.1</version> 
       <configuration> 
        <source>1.8</source> 
        <target>1.8</target> 
       </configuration> 
      </plugin> 
      <!-- Mavven package plugin --> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-jar-plugin</artifactId> 
       <version>2.4</version> 
       <configuration> 
        <archive> 
         <manifest> 
          <addClasspath>true</addClasspath> 
          <mainClass>${main.class}</mainClass> 
         </manifest> 
        </archive> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 
</project> 

无需禅JavaFX插件了。希望对某人有帮助。

最可能的问题是罐子的包装。您需要打包runnable jar而不是普通的罐子。

你有很多选择建立一个使用JavaFX Maven Plugin

<plugin> 
    <groupId>com.zenjava</groupId> 
    <artifactId>javafx-maven-plugin</artifactId> 
    <version>8.1.1</version> 
    <configuration> 
     <mainClass>fully.qualified.MainClass</mainClass> 
    </configuration> 
</plugin> 

你会发现你需要在documentation

你也可以使用一个maven-assembly-plugin知道的一切最好的有:

<plugin> 
    <artifactId>maven-assembly-plugin</artifactId> 
    <configuration> 
     <descriptorRefs> 
     <descriptorRef>jar-with-dependencies</descriptorRef> 
     </descriptorRefs> 
     <archive> 
     <manifest> 
      <mainClass>fully.qualified.MainClass</mainClass> 
     </manifest> 
     </archive> 
    </configuration> 
</plugin> 

这将在您的目标文件夹内创建一个包含ProjectName-Version-SNAPSHOT-jar-with-dependencies.jar的罐子。

你可以在它上面运行上双击罐子或在终端使用以下命令:

java -jar jarName