我正在尝试从公共类访问数据文件,这两个文件都位于JAR文件中。但是,当我在Hadoop集群上执行jar时,系统会抛出FileNotFoundException。底线是:在集群上运行应用程序时是否可以访问Jar中的资源,或者是否需要将资源单独复制到HDFS,对于上述任何一种情况,您将如何进行实施它?
谢谢!
答案 0 :(得分:1)
是的,如果JAR在CLASSPATH中,您可以使用类加载器或servlet上下文调用getResourceAsStream()
来获取对该文件的InputStream的引用。
您无权访问文件路径。您提供相对于CLASSPATH的路径,类加载器找到该文件。您可以获取内容,但不能获取绝对位置。
你不应该想要绝对的位置。你会用它做什么?
您无法写入该文件。你无法改变任何事情。如果您的应用程序打包在WAR文件中,则无法更改其内容。