Java 如何声明文件夹路径?
我有一个使用Swing库的桌面应用程序。应用程序正在运行批处理文件。所以我在主项目目录中创建了一个Java 如何声明文件夹路径?,java,Java,我有一个使用Swing库的桌面应用程序。应用程序正在运行批处理文件。所以我在主项目目录中创建了一个lib文件夹,并将批处理文件放入其中。要运行此操作,我将显示lib\a.exe以运行此操作。它正在我的笔记本电脑上工作。我导出了.jar并将lib文件夹放在它旁边。它在我的笔记本电脑上工作,但在其他一些笔记本电脑上不工作。如何解决这个问题 错误消息是:Windows找不到lib\a.exe String command = "cmd /c start lib\\a.exe";
lib
文件夹,并将批处理文件放入其中。要运行此操作,我将显示lib\a.exe
以运行此操作。它正在我的笔记本电脑上工作。我导出了.jar并将lib文件夹放在它旁边。它在我的笔记本电脑上工作,但在其他一些笔记本电脑上不工作。如何解决这个问题
错误消息是:Windows找不到lib\a.exe
String command = "cmd /c start lib\\a.exe";
try {
Runtime.getRuntime().exec(command);
increaseProgressBarValue();
} catch (IOException e) {
e.printStackTrace();
}
也许你必须尝试一下这个文件夹库是否存在,如果不存在,就用
file.mkdir();
这只是一张支票。但是您的文件路径必须是这样的../lib/a.exe。您需要两件事:
private static File getJar(Class clazz) throws MalformedURLException {
String name = clazz.getName().replace('.','/') + ".class";
ClassLoader cl = Thread.currentThread().getContextClassLoader();
URL url = cl.getResource(name);
System.out.println(url);
if (!"jar".equals(url.getProtocol())) {
throw new MalformedURLException("Expected a jar: URL " + url);
}
String file = url.getPath();
int pos = file.lastIndexOf('!');
if (pos < 0) {
throw new MalformedURLException("Expected ! " + file);
}
url = new URL(file.substring(0, pos));
if (!"file".equals(url.getProtocol())) {
throw new MalformedURLException("Expected a file: URL " + url);
}
String path = url.getPath();
if (path.matches("/[A-Za-z]:/")) { // Windoze drive letter
path = path.substring(1);
}
return new File(path);
}
你能给我写些代码吗?好的,我编辑了我的问题。它找不到与jar位于同一文件夹中的lib文件夹(但在某些计算机上工作)。我必须在5分钟内解决这个问题:)您可以得到工作目录
String curDir=System.getProperty(“user.dir”)你的答案完全不相干。我不想创建文件夹。jar旁边已经有我的lib文件夹了!Opps我忘了当你使用jar中的一些目录时,你必须像这样设置文件路径../lib/a.exe,这样就可以了。问题是,当运行jar时,JVM搜索jar中某个地方的lib flder。试试../lib/a.exe谢谢,你的方法很优雅。
File jar = getJar(MyClass.class); // MyClass can be any class in you jar file
File dir = jar.getParentFile();
ProcessBuilder builder = new ProcessBuilder();
builder.command("lib\\a.exe");
builder.directory(dir);
...
Process p = builder.start();
...