Java 从jar中动态创建的目录(在文件系统中)读取
嗨,我有一个JavaEclipse项目,我想从命令行执行它。我制作了一个jar,并从命令行运行它 我知道了如何使用getresourceasstream访问Jar中的文件 例: 我现在想知道的是如何从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
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