我有以下简单的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/