Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.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 从jar中动态创建的目录(在文件系统中)读取_Java_Eclipse_Hadoop_Jar - Fatal编程技术网

Java 从jar中动态创建的目录(在文件系统中)读取

Java 从jar中动态创建的目录(在文件系统中)读取,java,eclipse,hadoop,jar,Java,Eclipse,Hadoop,Jar,嗨,我有一个JavaEclipse项目,我想从命令行执行它。我制作了一个jar,并从命令行运行它 我知道了如何使用getresourceasstream访问Jar中的文件 例: 我现在想知道的是如何从jar访问目录 目前: Runtime.getRuntime().exec("hadoop fs -get /tmp/stockmarkets/ localfile"); File dir = new File("/home/hadoop/project/localfile");` 这将产生fil

嗨,我有一个JavaEclipse项目,我想从命令行执行它。我制作了一个jar,并从命令行运行它

我知道了如何使用getresourceasstream访问Jar中的文件

例:

我现在想知道的是如何从jar访问目录

目前:

Runtime.getRuntime().exec("hadoop fs -get /tmp/stockmarkets/ localfile");
File dir = new File("/home/hadoop/project/localfile");`
这将产生filenotfoundexception

我想做的是

File[] directoryListing = dir.listFiles();
if (directoryListing != null) {
for (File child : directoryListing) {
        ....
    }
}
因此,转到目录并在该目录中的每个文件上循环。。我该怎么做才能让它适合我的罐子

所以我试了一下:

Runtime.getRuntime().exec("hadoop fs -get /tmp/stockmarkets/ localfile");
File dir =new File(Extractor.class.getResource("/home/hadoop/project/localfile").getPath());
错误:

Exception in thread "main" java.lang.NullPointerException

我检查了我的目录,它确实有本地文件目录

您必须提供一个文件系统路径作为属性使用

java -jar yourprogram.jar -DworkDir=/home/hadoop/project

或命令行参数,然后在hadoop调用和
文件
声明中都使用该参数。

任何您想使用的原因,因为要访问HDFS,我需要使用HIVE/PIG,这是我想要避免的/。访问HDSFS不需要HIVE/PIG,您可以通过普通的独立java程序来完成。看一看不,我会事先知道目录的目的地。所以我想在我的java文件中包含workDir的路径。这很糟糕,因为你会被绑定到一个特定的目录,而这个目录可能不存在于不同的环境中。我正在创建这个目录,作为另一个hadoop作业的输出,我将在这里访问它。这是我需要实现的一个非常特定于工作的功能
java -jar yourprogram.jar -DworkDir=/home/hadoop/project