2014-07-07 96 views
2

我正在接管這個傢伙應用程序,他幾乎沒有留下任何東西,即使編碼沒有評論。幸運的是(還有一點時間),我能夠改進應用程序,並使它像電腦上的魅力一樣運行。從Java 7u21遷移到更高版本時,Javafx應用程序無法啓動

但我有一個問題,這是煩人的,並阻止我升級應用程序。我的應用程序可以在任何安裝了java 1.7.0_21版本的機器上運行,但是當我更新到新版本(目前它的版本是1.7.0_60)時,應用程序無法運行,它只是繼續存在這個愚蠢的錯誤,我無法做到任何事情來解決它。

以下是錯誤日誌:

RenderJob.run: internal exception 
java.lang.UnsatisfiedLinkError: com.sun.prism.d3d.D3DContext.nSetBlendEnabled(JZ 
Z)I 
at com.sun.prism.d3d.D3DContext.nSetBlendEnabled(Native Method) 
at com.sun.prism.d3d.D3DContext.initState(D3DContext.java:84) 
at com.sun.prism.d3d.D3DResourceFactory.<init>(D3DResourceFactory.java:5 
7) 
at com.sun.prism.d3d.D3DPipeline.createResourceFactory(D3DPipeline.java: 
150) 
at com.sun.prism.d3d.D3DPipeline.getD3DResourceFactory(D3DPipeline.java: 
156) 
at com.sun.prism.d3d.D3DPipeline.findDefaultResourceFactory(D3DPipeline. 
java:182) 
at com.sun.prism.d3d.D3DPipeline.getDefaultResourceFactory(D3DPipeline.j 
ava:204) 
at com.sun.prism.GraphicsPipeline.getDefaultResourceFactory(GraphicsPipe 
line.java:97) 
at com.sun.javafx.tk.quantum.QuantumRenderer$3.run(QuantumRenderer.java: 
143) 
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) 
at java.util.concurrent.FutureTask.runAndReset(Unknown Source) 
at com.sun.prism.render.RenderJob.run(RenderJob.java:37) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(Quantu 
mRenderer.java:98) 
at java.lang.Thread.run(Unknown Source) 

我發現了另一個問題,這是類似 Unable to deploy JavaFX applicaiton with external libraries in a JAR 但我不能適用,在我的情況下,由於該節目/框架需要從.bat文件運行(這實際上是命令行)來創建一堆報告文件和文件夾。

+0

你有沒有添加到系統路徑或類路徑的javafx罐子?如果這樣刪除相同。 – AJJ

+0

是的我有一個外部lib文件夾,但如果我刪除任何,該應用程序將無法正常工作,因爲我已經告訴我的應用程序在運行命令 –

回答

2

您附加到您的應用程序的很重要的JavaFX版本? 我懷疑所附的JavaFX版本與1.7.0_60不兼容。我有一些平等的問題。 但是這個例外對我來說是新的(它的一些內部棱鏡的東西)

+1

尋找類路徑我不能相信我錯過了這個東西,我的意思是我瀏覽了所有外部lib文件,並將它們更新到最新版本,以便與1.7.0_60保持最佳兼容性,但我顯然錯過了這一個。所以簡單的解決方案是轉到有問題的機器上的安裝文件夾,並將jfxrt.jar文件複製/替換到我的外部lib文件夾中。非常感謝! –

+0

牛眼!這也解決了我的!哈哈! – Fritz

0

我的經驗是JFXRT JAR與JRE/JDK version.update緊密耦合在一起(在oracles JVM)。這意味着應用程序需要在jvm version.update上運行,因爲它是從中提取的。你應該可以通過使用這裏找到的規定的建築方法,http://docs.oracle.com/javafx/2/deployment/packaging.htm來解決這個問題。

+0

我發現最成功的方法是將所需的jre與應用程序捆綁在一起。它不是最乾淨的,甚至接近最好的,但它最可靠。 – Lexxicon

+0

謝謝大家,我通過將我的jfxrt.jar文件更新到我運行的機器的本地版本解決了問題。有時問題來自我們錯過的一些小步驟。 –

相關問題