问题
I have created a text editor using Java, and have it packed in a jar file using Netbeans. Now I created a text file, with an extension of ".text". I'm on Windows 7, so using it's property window I changed the default opening program to my text editor's jar file.
Now when I double click the file with ".text" extension, windows shows a dialogbox saying "{file name} is not a valid win32 application".
Please help me out of it..
Thanks.
回答1:
The problem is that a JAR file is selected as the "default application". However, JAR files are normally not executable. That is, a JAR file is not a valid Windows application. It doesn't matter if the JAR extension itself has a default application associated with it, because the "Open verb" is not used recursively in other "Open verb" definitions.
Instead,
- Create a batch (".BAT") file (or small EXE wrapper) that calls
java
(orjavaw
, as appropriate) and use that executable wrapper as the "Open with" program. (This will have an annoying intermediate console window if using a batch file.) Or, - Modify the registry so that the "Open verb" for the extension launches the JAR through
java
(orjavaw
).
In the end, either form should look similar to: javaw -jar TheJarFile.jar "%1%"
. (Note that javaw
is an executable, while TheJarFile.jar
is not an executable.)
See java - the Java application launcher for how to use java/javaw.
回答2:
Launch the Jar using Java Web Start. The launch file provides the ability to set-up a file/content-type association. Here is a demo. of the file services that..
..prompts the user to associate file extension
.zzz
(simply a file type unlikely to clash with existing file associations) of content typetext/sleepytime
. ..
To do that at run-time in a JWS app., look to the IntegrationService introduced in 1.6.0_18+.
JWS is designed to work on Windows (and OS X & *nix).
回答3:
May be because .text is not an executable file.
try using this..
Runtime.getRuntime().exec("cmd.exe /C file");
This will open your file with the default program.
Update: I got confused first, may be I didn't read your question properly. I thought your executing .text file directly from a Java code..
Runtime.getRuntime().exec("file.text");
//Gives error CreateProcess error=193, %1 is not a valid Win32 application
So I suggested opening it with cmd(as in answer).
But reading your scenario, it seems windows is unable to execute your jar itself.
To make your jar executable, try this..
java -jar yourjarfile.jar
....
来源:https://stackoverflow.com/questions/9632793/use-a-java-application-as-the-default-program-for-a-particular-file-type