4 回答

TA貢獻(xiàn)1869條經(jīng)驗(yàn) 獲得超4個(gè)贊
其他計(jì)算機(jī)在不包含 JavaFX 的 Java 安裝上運(yùn)行。它可以在您的機(jī)器上運(yùn)行,因?yàn)槟_實(shí)安裝了 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貢獻(xiàn)1858條經(jīng)驗(yàn) 獲得超8個(gè)贊
我想通了:它是指向 JDK10 bin 的用戶路徑變量。
我們改變了路徑?,F(xiàn)在它適用于“java -jar programm.jar”但不適用于“java programm.jar”
但不是通過常規(guī)單擊文件。但是我們寫了一個(gè)批處理文件,用“java -jar”啟動(dòng)應(yīng)用程序,它工作正常。
有沒有人解釋這種行為?

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

TA貢獻(xiàn)1873條經(jīng)驗(yàn) 獲得超9個(gè)贊
對我來說,如果相同的代碼在那些機(jī)器上通過 IDE 運(yùn)行,那么它看起來像是可運(yùn)行的 jar 問題。您可以嘗試使用 maven assembly 插件來打包您的 jar。
Apache Maven Assembly Plugin 允許用戶將項(xiàng)目輸出及其依賴項(xiàng)、模塊、站點(diǎn)文檔和其他文件聚合到一個(gè)可運(yùn)行的包中。
<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>
添加回答
舉報(bào)