我遇到运行Java程序的问题。
jar文件中有一行代码,可以将FileInputStream打开到"/apps/somefile"
位置的某个文件,
但是我无法访问根目录。
问题是我无法更改代码,因为它是在jar文件中提供的,因此无论如何都要更改为"/"
在运行java程序时指向的根目录?
这里有参考线:
FileInputStream fileInputStream = new FileInputStream("/apps/somefile");
答案 0 :(得分:3)
您提供的代码行不直接。它是Java源代码,Java通常被编译为字节码并以该形式呈现给JVM。听起来你的jar可能包含源文件以及已编译的类文件,有时这样做。如果是这种情况,那么您只需从jar中解压缩Java源代码,修改它们,重新编译,然后从结果中创建一个新的jar。
如果您没有源代码,那么您可以尝试反编译,正如另一个答案所示。这有点讨厌,但它可能会奏效。
或者,您实际要问的是
无论如何都要更改到运行java程序时“/”指向的根目录?
实际上,可能存在,具体取决于运行代码的系统。你可以想象在chroot
下运行你的程序,这正是这种效果。然而,这是一个非常重要的练习,如果您无法访问根目录(虽然我不确定如何在这种情况下执行任何),那么您很可能会这样做没有足够的权限来设置或使用chroot
环境。
答案 1 :(得分:0)
你需要对那个jar做一个反编译器。您可以使用:http://jd.benow.ca/
然后您需要更改具有InputStream的类,然后再次编译并生成Jar文件。