在命令行中运行.jar文件可以正常工作,但我无法通过双击Windows 7(64)来运行任何.jar文件.双击后似乎没有任何反应.
我尝试了"ftype"提示,没有成功.ftype jarfile ="C:\ Program Files\Java\jre7\bin\javaw.exe"-jar"%1"%*
我重新安装了JDK 7 64位,没有成功.
任何的想法?
我有一个java项目,从Eclipse中运行它时可以正常工作.当我尝试将其导出到a "JAR file"或"Runnable JAR file".jar文件时创建,但是当我双击它以尝试运行该程序时,它会给我一个错误
"Could not find the main class: package.MainClassName. Program will exit."
Run Code Online (Sandbox Code Playgroud)
正如我所提到的,我尝试导出到两个JAR选项,我指定了main方法所在的正确类,当我查看文件中的实际文件时,.jar一切似乎都是有序的 - 清单看起来像:
Manifest-Version: 1.0
Main-Class: package.MainClassName
(blank line)
Run Code Online (Sandbox Code Playgroud)
并在META-INF文件夹中.我的包名称有一个文件夹,其中包含所有.class文件,包括包含main方法的类.我使用的一些图像和文本文件也出现在jar文件中.
实际的程序并不是太复杂 - 它是一个使用Swing的简单"蛇"游戏(加上代码在Eclipse内部运行时都有效).
是什么原因造成了这个错误以及我如何解决它?如果我应该提供任何其他信息,请告诉我.
所以我一直在编写一个简单的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) 有没有什么办法可以制作一个可执行的.jar,它会在双击时打开命令行?
我正在制作一个基于文本的冒险游戏.截至目前,它只是一个有房间的迷宫.最终它会变得更大更深入,但是现在我只想让基本结构失效.无论如何,为了完成这项工作,我一直在从System.out.printf命令和java.util.Scanner获取输出和输入.到目前为止,这一切都工作得很漂亮,但我发现当我尝试将这个问题发送给其他不知道如何或者不想从命令行运行程序的人时,我会遇到问题.
我在http://code.google.com/p/luke/downloads/list上下载了"Lukeall-3.5.0" 这是一个JAR文件,但我不知道它是如何工作的?有人能告诉我运行卢克的详细步骤吗?谢谢!
这几乎让我失败了.
在XP和早期版本的Windows上,您可以自定义Open With filetypes以包含java-jar"myjar.jar",但在Vista上,此功能似乎已被删除.我当然可以创建一个.bat文件来启动我的应用程序,但是可以根据需要让Vista执行.jar吗?
当我双击jar文件时,GUI程序不会自动启动.相反,我必须打开命令提示符,然后键入java -jar abc.jar,然后才启动它.这是为什么?我需要做些什么才能避免这种情况?
我的默认jar文件打开器有问题吗?什么应该是jar文件开启者?
我使用Eclipse的"Export - > Java - > Runnable Jar File"函数生成了一个非常简单的可运行jar文件.我的HelloWorld类看起来像这样:
import javax.swing.JFrame;
public class HWorld extends JFrame {
public static void main(String[] args) {
new HWorld();
}
public HWorld() {
this.setSize(200, 100);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setTitle("Hello World!");
this.setVisible(true);
}
}
Run Code Online (Sandbox Code Playgroud)
现在,在生成.jar文件后,使用命令"java -jar HWorld.jar"从命令行运行正常
但是,当我尝试自己执行jar(据说应该可以工作)时,我得到以下错误,我不知道为什么:
E:\Eclipse\workspace>HWorld.jar
Exception in thread "main" java.lang.NoClassDefFoundError: E:\Eclipse\workspace\HWorld/jar
Caused by: java.lang.ClassNotFoundException: E:\Eclipse\workspace\HWorld.jar
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
Could not find the main class: E:\Eclipse\workspace\HWorld.jar. Program will exit.
Run Code Online (Sandbox Code Playgroud)
我的清单看起来像这样:
Manifest-Version: 1.0 …Run Code Online (Sandbox Code Playgroud) 我有这个java程序,我想在jar中打包.它编译得很好,它可以毫无错误地编译成jar.但是,当我双击它时,它不会启动.我知道大多数jar应用程序都使用JFrame,并且工作正常.但它是否可以使命令提示符/ shell为基础?(如显示System.out.println)
例如,可以通过双击jar来执行此代码:
public class Hello
{
public static void main( String[] args )
{
System.out.println( "Hello, World!" );
}
}
Run Code Online (Sandbox Code Playgroud)