使用Java应用程序作为特定文件types的默认程序?

我创build了一个使用Java的文本编辑器,并使用Netbeans将它打包成一个jar文件。 现在我创build了一个文本文件,扩展名为“.text”。 我在Windows 7上,所以使用它的属性窗口,我改变了默认的开放程序到我的文本编辑器的jar文件。

现在,当我用“.text”扩展名双击文件时,窗口显示一个对话框,说“{文件名}不是有效的win32应用程序”。

请帮我解决

谢谢。

Solutions Collecting From Web of "使用Java应用程序作为特定文件types的默认程序?"

问题是选择一个JAR文件作为“默认应用程序”。 但是,JAR文件通常不可执行。 也就是说,JAR文件不是有效的Windows应用程序。 如果JAR扩展本身具有与之关联的默认应用程序,则无关紧要,因为“Open动词” 不会在其他“Open verb”定义中递归使用。

代替,

  1. 创建一个调用java (或javaw ,如适用)的批处理(“.BAT”)文件(或小EXE包装器),并使用该可执行包装器作为“打开方式”程序。 (如果使用批处理文件,这将会产生恼人的中间控制台窗口。) 或者
  2. 修改注册表,以便扩展的“打开动词” 通过 java (或javaw )启动JAR。

最后,任何一种形式都应该类似于: javaw -jar TheJarFile.jar "%1%" (请注意, javaw是一个可执行文件,而TheJarFile.jar 不是可执行文件。)

请参阅java -关于如何使用java / javaw 的Java应用程序启动器 。

使用Java Web Start启动Jar。 启动文件提供了设置文件/内容类型关联的功能。 这里是一个演示。 的文件服务

..提示用户将内容类型text/sleepytime文件扩展名.zzz (只是一种不太可能与现有文件关联冲突的文件类型)关联text/sleepytime ..

要在运行时在JWS应用程序中执行此操作,请查看1.6.0_18 +中介绍的IntegrationService

JWS被设计为在Windows(和OS X和* nix)上工作。

可能是因为.text不是可执行文件。

尝试使用这个..

 Runtime.getRuntime().exec("cmd.exe /C file"); 

这将使用默认程序打开您的文件。

更新:我弄糊涂了,可能是我没有正确地读你的问题。 我以为你直接从Java代码执行.text文件..

Runtime.getRuntime().exec("file.text"); //给出错误CreateProcess错误= 193,%1不是有效的Win32应用程序

所以我建议用cmd打开它(如在答案中)。

但是阅读你的场景,似乎Windows无法执行你自己的jar。

为了使你的jar可执行文件,试试这个..

java -jar yourjarfile.jar ….