Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将应用程序设为默认应用程序_Java_Swing - Fatal编程技术网

Java 将应用程序设为默认应用程序

Java 将应用程序设为默认应用程序,java,swing,Java,Swing,我已经用JavaSwings创建了一个音乐应用程序,我想将它设置为所有mp3格式文件的默认音乐播放器。有人知道怎么做吗? 就像在屏幕截图中一样,所有pdf文件都在adobe reader上打开。我的应用程序工作正常,运行起来没有问题。目前,我打开我的应用程序中的文件,但现在我希望每当我双击mp3文件时,它就会在我的应用程序中打开 注意:我已经创建了一个可执行文件,但当我单击“打开方式”时,我需要窗口提示我的应用程序打开。Shift+右键单击mp3文件,选择“打开方式”。现在,在打开的对话框中选

我已经用JavaSwings创建了一个音乐应用程序,我想将它设置为所有mp3格式文件的默认音乐播放器。有人知道怎么做吗?

就像在屏幕截图中一样,所有pdf文件都在adobe reader上打开。我的应用程序工作正常,运行起来没有问题。目前,我打开我的应用程序中的文件,但现在我希望每当我双击mp3文件时,它就会在我的应用程序中打开


注意:我已经创建了一个可执行文件,但当我单击“打开方式”时,我需要窗口提示我的应用程序打开。

Shift+右键单击mp3文件,选择“打开方式”。现在,在打开的对话框中选择可执行文件并选中“始终使用打开”


对于jar文件,您可以使用java.exe作为参数java-jar yourjarname.jar执行,这非常简单:
.jar
-文件本身不可执行。JVM是可运行的。一种解决方法是在例如
C
C++
中编写包装器应用程序,并将其编译为可执行文件。或者使用像launch4j这样的包装器库。您可以在此处找到有关这些包装的更多信息:

如果您确实想从java应用程序中编辑文件关联,可以使用来完成该任务

boolean editDefaultApplication(){
    AssociationService serv = new AssociationService();

    //try to remove old association
    Association logassoc = serv.getFileExtensionAssociation(".mp3");       

    try {
        serv.unregisterUserAssociation(logassoc);
    } catch (java.lang.IllegalArgumentException |  AssociationNotRegisteredException | RegisterFailedException e) {
         e.printStackTrace();
         return false;
    }

    //add your own application as default
    logassoc.addFileExtension(".mp3");
    logassoc.addAction(new org.jdesktop.jdic.filetypes.Action("open", "<path to wrapper executable>"));
    try {
        serv.registerUserAssociation(logassoc);
    } catch (java.lang.IllegalArgumentException |  AssociationNotRegisteredException | RegisterFailedException e) {
         e.printStackTrace();
         return false;
    }

    return true;
}
boolean editDefaultApplication(){
AssociationService serv=新AssociationService();
//尝试删除旧关联
关联logassoc=serv.getFileExtensionAssociation(“.mp3”);
试一试{
服务未注册用户协会(logassoc);
}catch(java.lang.IllegalArgumentException | AssociationNotRegisteredException | RegisterFailedException e){
e、 printStackTrace();
返回false;
}
//将自己的应用程序添加为默认应用程序
logassoc.addFileExtension(“.mp3”);
logassoc.addAction(新的org.jdesktop.jdic.filetypes.Action(“打开”);
试一试{
服务注册协会(logassoc);
}catch(java.lang.IllegalArgumentException | AssociationNotRegisteredException | RegisterFailedException e){
e、 printStackTrace();
返回false;
}
返回true;
}

这不是一个Java问题;它是关于如何使Windows使用特定的应用程序作为给定扩展的处理程序。thanx的评论,但我找不到任何具体的方式来做它。它只是说,我可以做,但问题是how@AndyTurner这是一个java问题。你提供的链接没有用,需要进一步阅读。Jar文件本身不是可执行文件,也不能被选为默认应用程序。Jar文件本身不是可执行文件,windows不允许您选择Jar作为默认程序。那么java-Jar呢?您的.Jar呢?如果您可以通过使用java-Jar实现启动所需的功能,为什么要投否决票?嗯,“java-Jar”也不是可执行文件,而是一个终端命令。“打开方式”仅接受
.exe
-文件和一些其他文件类型。否决票是因为你无法通过这种方式实现。唯一接近答案的方法是写一个包含你提到的命令的批处理文件。这就是你又错了的地方,@Paul。它是“java.exe”,所以它可以工作。我以前也这样做过,效果很好。你试过了吗?因为它确实对我有用。我已经使它可执行了,但它应该是编码中的东西,例如,当你点击html文件并选择“用它打开”时,会自动建议浏览器。@sahib我记得(答案被删除了)。您仍然需要一个包装器应用程序,原因与我上面提到的相同。事实上,你使整个问题变得更加复杂,因为这将使整个程序更加依赖于系统。例如,在windows中,您必须编辑注册表,对于linux和mac,整个过程将不同。@sahib如果它实际上是一个
.exe
-文件(或操作系统的等效文件),我仍然建议您只需使用“打开方式”选项并将程序设置为默认程序,而不是从应用程序中设置默认应用程序。那要复杂得多。如果您确实希望包含该特性,那么需要JDIC库()。