Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.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
如何在读取字符串args[]中指定的文件的jar文件中运行java代码_Java_Gradle_Jar - Fatal编程技术网

如何在读取字符串args[]中指定的文件的jar文件中运行java代码

如何在读取字符串args[]中指定的文件的jar文件中运行java代码,java,gradle,jar,Java,Gradle,Jar,所以我有一个java程序,它读取使用args指定的文件 $ java Main somefile.txt 但是当我把它做成一个罐子时,我该怎么做呢?假设foo.jar包含 -META-INF -Main.class -someFile.txt 并与一起运行(不指定args after) java-jarfoo.jar 我该怎么做?请注意,我还使用gradle来组装罐子。有几种方法 您可以在jar文件中提供一个命令,告诉“java”命令要启动哪个类。这在Java教程中称为“”。然后 java

所以我有一个java程序,它读取使用args指定的文件

$ java Main somefile.txt
但是当我把它做成一个罐子时,我该怎么做呢?假设foo.jar包含

-META-INF
-Main.class
-someFile.txt
并与一起运行(不指定args after)

java-jarfoo.jar


我该怎么做?请注意,我还使用gradle来组装罐子。

有几种方法

  • 您可以在jar文件中提供一个命令,告诉“java”命令要启动哪个类。这在Java教程中称为“”。然后

    java-jar foo.jar src/sourceset/resources/someFile.txt

  • 您还可以从jar文件:

    java-cp foo.jar Main src/sourceset/resources/someFile.txt

    从原始问题的注释和编辑来看,您似乎希望运行java命令而不在该行上放置任何参数,但也希望程序接收参数。没有办法直接做到这一点

相反,编写自己的小java程序,用所需的参数值调用原始的main()例程:

public class MyAdapter {

    public static void main(String[] args) {
        OtherProgram.main(String[]{"somefile.txt});
    }

}
然后调用它


不知何故,你必须在那里得到“somefile.txt”字符串。如果不能将其作为参数提供,则必须在jar文件中提供它。

(不指定args after)”,与不使用args
java Main
的构建代码相同,方法是在代码中使用常量或获取文件夹中的每个文件,或指定参数在一个属性(文本)文件中,我没有说得足够清楚,我的问题是如果我想运行jar文件而不指定args。也就是说,someFile.txt也在foo.jar中。很抱歉搞混了。