相关疑难解决方法(0)

在Windows上运行JAR文件

我有一个名为helloworld.jar的JAR文件.为了运行它,我在命令行窗口中执行以下命令:

java -jar helloworld.jar
Run Code Online (Sandbox Code Playgroud)

这工作正常,但如何通过双击执行它?我需要安装任何软件吗?

java jar executable-jar

215
推荐指数
11
解决办法
111万
查看次数

为什么我的JAR文件在CMD上执行,而不是双击?

所以我一直在编写一个简单的3D GUI应用程序,我打算让用户只需双击JAR文件就可以使用它.在将它放入JAR文件之前我完全正常工作,并且在从命令提示符运行时在JAR文件中完美地工作(在jar文件的目录中键入"java -jar Modeler.jar").但是,当我双击它时,没有任何反应.它运行完美,没有来自命令提示符的错误.我从经验中知道没有显示启动时的崩溃报告,因为控制台没有出现(或者它消失得太快),但是从命令提示符运行时没有崩溃报告.关于它为什么不起作用的任何想法?我正在运行Windows 7 Home Premium.以下是JAR文件的内容,如果它有帮助:

Modeler.jar
|
+--*all the class files necessary*
|
+--META-INF
   |
   +--MANIFEST.MF
Run Code Online (Sandbox Code Playgroud)

MANIFEST.MF的内容:

Manifest-Version: 1.0
Built-By: AnonymousJohn
Class-Path: bin/j3dcore.jar bin/j3dutils.jar bin/vecmath.jar
Created-By: 1.6.0_16 (Sun Microsystems Inc.)
Main-Class: Start
Run Code Online (Sandbox Code Playgroud)

编辑:所以在搞乱文件关联后使用java.exe而不是javaw.exe(从而提供打印输出的窗口),然后稍微修改启动机制打印出当前的工作目录,我发现了jar从"C:\ Windows\system32"运行,而不是我放在桌面上的文件夹.转到图.但是,移动必要的外部文件并没有任何帮助.

编辑2:我尝试制作另一个JAR文件,这次是一个简单的JFrame,里面有一个按钮,告诉你当前的工作目录.按下按钮,它会打开一个(无用的)JFileChooser.无论我把它放在我的电脑里,这都可以双击.所以我的JAR文件一定有问题.我将再次开始对我的程序进行故障排除.

编辑3:问题正是我的想法:当我双击它时,它没有正确加载库.奇怪的是,在我的测试中,我显示当前路径和库路径,无论是通过命令提示符还是通过双击它运行它,输出都完全相同.这是堆栈跟踪:

java.lang.UnsatisfiedLinkError: no j3dcore-d3d in java.library.path
  at java.lang.ClassLoader.loadLibrary(Unknown Source)
  at java.lang.Runtime.loadLibrary0(Unknown Source)
  at java.lang.System.loadLibrary(Unknown Source)
  at javax.media.j3d.NativePipeline$1.run(NativePipeline.java:231)
  at java.security.AccessController.doPrivileged(Native Method)
  at javax.media.j3d.NativePipeline.loadLibrary(NativePipeline.java:200)
  at javax.media.j3d.NativePipeline.loadLibraries(NativePipeline.java:157)
  at javax.media.j3d.MasterControl.loadLibraries(MasterControl.java:987)
  at javax.media.j3d.VirtualUniverse<clinit>(VirtualUniverse.java:299)
  at javax.media.j3d.Canvas3D.<clinit>(Canvas3D.java:3881)
  at ModelPreview.<init>(ModelPreview.java:51)
  at Modeler.<init>(Modeler.java:76)
  at Modeler.main(Modeler.java:1227)
  at Start.main(Start.java:92)
Run Code Online (Sandbox Code Playgroud)

唯一的问题是它在库路径中.我特意在程序中设置它.现在我想到这可能是问题所在.我这样设置它(这是我在互联网上找到的一种方法.我不记得在哪里):

//above was code to …
Run Code Online (Sandbox Code Playgroud)

java jar executable-jar

18
推荐指数
3
解决办法
3万
查看次数

标签 统计

executable-jar ×2

jar ×2

java ×2