java - Linux下从其他工作路径运行java文件

标签 java linux

我有以下简单的java应用程序,可以打开一个文件来读取。我已将其编译成 run.jar 文件,然后将 run.jar 文件复制到 /var/project 下,还复制了其附近的 file.txt 当我输入 "java -cp run.jar com.text.FileMain" 一切都很好

但是,当将我的目录更改为 "/tmp" 然后键入以下命令时,出现错误“找不到 file.txt 文件”。 其实也是预期的结果。我可以做什么来运行这个应用程序而不更改代码,因为它是一个 API 并且我不允许更改它。

这可能吗?

$ java -cp /var/project/run.jar com.test.FileMain
java.io.FileNotFoundException: file.txt (No such file or directory)
        at java.io.FileInputStream.open(Native Method)
        at java.io.FileInputStream.<init>(FileInputStream.java:120)
        at java.io.FileReader.<init>(FileReader.java:55)
        at com.test.FileMain.main(FileMain.java:20)

$ 密码 /tmp

package com.test;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class FileMain {

    public static void main(String[] args) {

        List<Integer> list = new ArrayList<Integer>();
        File file = new File("file.txt");
        BufferedReader reader = null;

        try {
            reader = new BufferedReader(new FileReader(file));
            String text = null;

            while ((text = reader.readLine()) != null) {
                list.add(Integer.parseInt(text));
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (reader != null) {
                    reader.close();
                }
            } catch (IOException e) {
            }
        }

        // print out the list
        System.out.println(list);
    }

}

最佳答案

您可以使用脚本运行代码。

在脚本中 cd 到 /var/project 文件夹,然后给出 java 命令。脚本运行后,您应该回到/tmp 目录。但 java 会运行/var/project 并找到该文件。

脚本示例来源

#!/bin/bash
/var/project
java -cp /var/project/run.jar com.test.FileMain

保存到“/var/project/run.sh”并授予执行权限,应该没问题

从提示符运行它

$ /var/project/run.sh

关于java - Linux下从其他工作路径运行java文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23874055/

相关文章:

java - 使用 AspectJ 注释提供重写方法执行后的逻辑

java - Java中的多个用户输入错误消息(while循环)

linux - 需要将以下 awk 命令转换为 sed

java - 使用 Java 读取 GMail

java - 如果服务器没有响应,超时不起作用

java - 执行程序时不出现JLabel

linux - nproc 和 ulimit 之间的区别?

python - 用于扩展的 Gdb 7.10 Python 版本

javascript - @angular/cli 4 不会安装在 debian 上

python - 如何在 linux 终端控制台中运行 python 脚本并继续使用命令行?