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

时间:2012-03-09 10:49:41

标签: java windows file-association

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

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

请帮帮我..

感谢。

3 个答案:

答案 0 :(得分:11)

问题是选择了JAR文件作为“默认应用程序”。但是,JAR文件通常不是可执行文件。 也就是说,JAR文件不是有效的Windows应用程序。 JAR扩展本身是否有与之关联的默认应用程序并不重要,因为{{3 not 在其他“开放动词”定义中以递归方式使用。

相反,

  1. 创建一个批处理(“.BAT”)文件(或小型EXE包装器),根据需要调用java(或javaw),并将该可执行包装器用作“打开方式”程序。 (如果使用批处理文件,这将有一个烦人的中间控制台窗口。)
  2. "Open verb"以便扩展程序的“打开动词”通过 java(或javaw)启动JAR
  3. 最后,任何一个表单应该类似于:javaw -jar TheJarFile.jar "%1%"。 (请注意,javaw是可执行文件,而TheJarFile.jar 不是可执行文件。)

    有关如何使用java / javaw的信息,请参阅Modify the registry

答案 1 :(得分:0)

使用Java Web Start启动Jar。启动文件提供了设置文件/内容类型关联的功能。这是一个demo. of the file services ......

  

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

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

JWS旨在用于Windows(和OS X& * nix)。

答案 2 :(得分:-1)

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

尝试使用此..

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

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

更新:我首先感到困惑,可能是我没有正确阅读你的问题。我认为您直接从Java代码执行.text文件..

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

所以我建议用cmd打开它(如回答)。

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

要让你的jar可执行,试试这个..

java -jar yourjarfile.jar ...