我正在努力让学校的一个小程序变得更好,因为我比类的其他人更先进,并且想玩得开心。这是一个简单的 java 命令行程序,但我想用完整的 GUI 来制作它。
所以基本上我想在执行时访问 JAR 文件并打印(通过菜单选择的)类文件中编写的代码。我已经知道如何找到 JAR 文件并且这可行,但我找不到任何方法来进入 JAR 文件。我尝试创建一个 File 对象,并将 JAR 的路径与我想要访问的类文件的路径结合起来。 (例如:WinRAR 中的“C:\temp\Test\program.jar\de\bbzsogr\Main.class”)
这是我编写的“CodeGrabber”类的一些代码,用于访问 JAR 以及 JAR 中的文件。
public class CodeGrabber {
private static File JAR;
public static void grabCode(String className) {
try {
JAR = new File(Main.class.getProtectionDomain().getCodeSource().getLocation().toURI().getPath());
} catch (URISyntaxException e) {
e.printStackTrace();
}
System.out.println("JAR is located in: " + JAR);
// -> "JAR is located in: C:\temp\Test.jar"
System.out.println("Searching for \"" + JAR + File.separator + "ch" + File.separator + "bbzsogr" + File.separator + "Main.class");
// -> "Searching for "C:\temp\Test.jar\ch\bbzsogr\Main.class" "
File main = new File(JAR + File.separator + "ch" + File.separator + "bbzsogr" + File.separator + "Main.class");
try {
Scanner scanner = new Scanner(main);
while(scanner.hasNext()) {
System.out.println(scanner.nextLine());
}
} catch (FileNotFoundException e) {
System.out.println("File MAIN not found...");
return;
}
// -> "File MAIN not found..."
}
}
我异常(exception)地得到了一堆乱七八糟的数据,因为该文件(如果我可以访问它)仍然被编码/编译,但我收到消息,找不到所需的文件。
提前致谢!!
最佳答案
如果你想在java程序中添加和访问一个jar文件,你必须导入这个jar包含的java类并使用它们的方法。你应该写类似的东西
导入prog.mainclass
在程序的开头,而不是尝试通过 Jar 访问它。
对于你现在所问的问题,你的程序找不到jar的原因是你导入的路径无效。Java不能在任何程序内部搜索,只能在文件系统内部搜索。任何路径都应该不带点类似于 C:/temp/path
并且不能,例如 C:/temp.csv/path
关于java - 在java中将类内容打印到控制台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58004622/