4 回答

TA貢獻1869條經驗 獲得超4個贊
其他計算機在不包含 JavaFX 的 Java 安裝上運行。它可以在您的機器上運行,因為您確實安裝了 JavaFX。
要測試是否javafx.application.Application可用,您需要使用反射,即
boolean hasJavaFX;
try {
Class.forName("javafx.application.Application");
hasJavaFX = true;
} catch (ClassNotFoundException e) {
hasJavaFX = false;
}
if (hasJavaFX) {
MainFrame.remote(new String[] {"Swing Backup","Application start Error"});
} else {
proj.main.App.main(args);
}

TA貢獻1858條經驗 獲得超8個贊
我想通了:它是指向 JDK10 bin 的用戶路徑變量。
我們改變了路徑。現在它適用于“java -jar programm.jar”但不適用于“java programm.jar”
但不是通過常規單擊文件。但是我們寫了一個批處理文件,用“java -jar”啟動應用程序,它工作正常。
有沒有人解釋這種行為?

TA貢獻1909條經驗 獲得超7個贊
當您在 jdk 高于 11 的機器上運行時,您可能會得到classDefNotFoundExeption: javafx.application.Application 。
oracle 已經從 JDK 11 中刪除了 javaFX,因此需要提供對 javafx-controls 模塊的依賴。
`<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-controls</artifactId>
<version>12-ea+9</version>
</dependency>`
將此添加到您的依賴項中。
https://openjfx.io/

TA貢獻1873條經驗 獲得超9個贊
對我來說,如果相同的代碼在那些機器上通過 IDE 運行,那么它看起來像是可運行的 jar 問題。您可以嘗試使用 maven assembly 插件來打包您的 jar。
Apache Maven Assembly Plugin 允許用戶將項目輸出及其依賴項、模塊、站點文檔和其他文件聚合到一個可運行的包中。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<archive>
<manifest>
<mainClass>
package.your_main_class
</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</execution>
</executions>
</plugin>
添加回答
舉報