【问题标题】:Passing a File to another maching with a same JAR file将文件传递到具有相同 JAR 文件的另一台机器
【发布时间】:2014-10-20 17:48:31
【问题描述】:

这是我的问题。

我的包设置是:

-src
---- foo
-------- code.java    
---- foo.data
-------- files I need to access

目前我有一个 jar,其中包含我需要访问的所有上述文件。我将在我的机器上运行此代码,并将在我的机器上初始化的 File 对象发送到另一台运行相同 jar 的机器。

我的问题是如何获得数据文件的相对路径,以便当我将文件对象发送到他们知道要查看 jar 的另一台机器时?

我需要访问数据文件,以便对其执行方法。因此我需要用它创建一个新的文件(相对/路径/到/jar/数据/文件),然后我会将文件对象传递给另一台计算机进行计算。

目前我已经能够使用 getClass().getResource("data/" + "filename").getPath() 这给了我一个类似 file:/pathtojar!/pathtofileinjar/ 的路径,我认为它可以在另一台机器中找到 jar,但在尝试使用 jar 中的项目时我得到空指针。 jar 中的文件是否可以使用或有解决方法?

【问题讨论】:

    标签: java jar


    【解决方案1】:

    为什么不发送jar中文件的相对路径,而不是File? 然后其他程序可以使用该路径并从 jar 中读取数据。

    你可以试试绝对路径吗,像这样:

    package resourcetest;
    
    import java.net.URL;
    
    public class ResourceTest {
    
        public static void main(String[] args) {
            new ResourceTest().test();
        }
    
        private void test() {
            URL res = this.getClass().getResource("/data/data.txt");
            System.out.println(res);
        }
    
    }
    

    这里我要访问的数据文件是data/data.txt

    src\resourcetest\ResourceTest.class(该类运行并尝试访问 data/Data.txt
    src\data\Data.txt

    【讨论】:

    • 对不起,我应该说得更清楚一点,我实际上只是尝试过(最后一段)。问题是它通过 jar 找到了我想要的文件,但是当我尝试使用它时,我遇到了空指针问题。你认为我需要在尝试使用之前将文件从 jar 复制到 WD 或其他东西吗?
    猜你喜欢
    • 1970-01-01
    • 2018-08-10
    • 2020-09-18
    • 1970-01-01
    • 1970-01-01
    • 2011-01-28
    • 1970-01-01
    • 1970-01-01
    • 2013-08-13
    相关资源
    最近更新 更多