获取我刚才单击要用java应用程序打开的文件的路径(jar可执行文件)

获取我刚才单击要用java应用程序打开的文件的路径(jar可执行文件),java,windows,Java,Windows,我有一个简单的程序,它什么都不做: class ShowTheNameOfTheFile{ static public void main(String[] argv){ } } 我将其编译为showthenameoffile.jar,并将我的Windows计算机配置为使用它打开所有txt文件 现在,当我单击一个txt文件时,它将打开我的ShowTheNameofFile.jar程序 在java中,如何知道使用txt文件已打开ShowTheNameofFile应用程序?命令行参数应给

我有一个简单的程序,它什么都不做:

class ShowTheNameOfTheFile{
  static public void main(String[] argv){

  }
}
我将其编译为showthenameoffile.jar,并将我的Windows计算机配置为使用它打开所有txt文件

现在,当我单击一个txt文件时,它将打开我的ShowTheNameofFile.jar程序


在java中,如何知道使用txt文件已打开ShowTheNameofFile应用程序?

命令行参数应给出文件路径

class ShowTheNameOfTheFile{
    static public void main(String[] argv) {
        System.out.println(Arrays.toString(argv));
    }
}

命令行参数应该给出文件路径

class ShowTheNameOfTheFile{
    static public void main(String[] argv) {
        System.out.println(Arrays.toString(argv));
    }
}

您可以参考Joop Eggen的代码

问题是,如果这是唯一的代码,并且您将这个jar分配给Windows Open,那么它可能会在没有向任何控制台打印任何输出的情况下悄无声息地消亡,因为它不是从控制台启动的

首先,从控制台尝试

java -jar ShowTheNameOfTheFile.jar 1 2 3
如果这个数字被打印出来,那么它工作正常

然后加上这样的东西

Process Builder pb = new ProcessBuilder("cmd", "/c", "start", "echo", args[0]);
pb.start();

查看您的代码,然后双击一个文件。

您可以参考Joop Eggen的代码

问题是,如果这是唯一的代码,并且您将这个jar分配给Windows Open,那么它可能会在没有向任何控制台打印任何输出的情况下悄无声息地消亡,因为它不是从控制台启动的

首先,从控制台尝试

java -jar ShowTheNameOfTheFile.jar 1 2 3
如果这个数字被打印出来,那么它工作正常

然后加上这样的东西

Process Builder pb = new ProcessBuilder("cmd", "/c", "start", "echo", args[0]);
pb.start();

下载您的代码,然后双击一个文件。

@NikolayKuznetsov谢谢。更清楚吗?@NikolayKuznetsov和now?是的,现在我明白你的意思了。@NikolayKuznetsov非常感谢你的帮助,文件名不是作为参数(
argv
)交给java程序的吗?@NikolayKuznetsov谢谢。更清楚吗?@NikolayKuznetsov和now?是的,现在我明白你的意思了。@NikolayKuznetsov非常感谢你的帮助,文件名不是作为参数(
argv
)交给java程序的吗?“在windows下,你需要在注册表中附加一些细节”。这就是它不起作用的原因。“在windows下,您需要将一些详细信息附加到注册表中”。这就是它不起作用的原因。