在Java程序中更改反斜杠指向的根目录

时间:2017-02-10 03:46:48

标签: java fileinputstream

我遇到运行Java程序的问题。

jar文件中有一行代码,可以将FileInputStream打开到"/apps/somefile"位置的某个文件,

但是我无法访问根目录。

问题是我无法更改代码,因为它是在jar文件中提供的,因此无论如何都要更改为"/"在运行java程序时指向的根目录?

这里有参考线:

 FileInputStream fileInputStream = new FileInputStream("/apps/somefile");

2 个答案:

答案 0 :(得分:3)

您提供的代码行不直接。它是Java源代码,Java通常被编译为字节码并以该形式呈现给JVM。听起来你的jar可能包含源文件以及已编译的类文件,有时这样做。如果是这种情况,那么您只需从jar中解压缩Java源代码,修改它们,重新编译,然后从结果中创建一个新的jar。

如果您没有源代码,那么您可以尝试反编译,正如另一个答案所示。这有点讨厌,但它可能会奏效。

或者,您实际要问的是

  

无论如何都要更改到运行java程序时“/”指向的根目录?

实际上,可能存在,具体取决于运行代码的系统。你可以想象在chroot下运行你的程序,这正是这种效果。然而,这是一个非常重要的练习,如果您无法访问根目录(虽然我不确定如何在这种情况下执行任何),那么您很可能会这样做没有足够的权限来设置或使用chroot环境。

答案 1 :(得分:0)

你需要对那个jar做一个反编译器。您可以使用:http://jd.benow.ca/

然后您需要更改具有InputStream的类,然后再次编译并生成Jar文件。