Java 获取ProcessBuilder=新建ProcessBuilder();要工作,请帮忙
昨天在StackOverflow的帮助下,我很感激,可惜我还不能投票。我能够从一个Java程序中创建一个Java程序,这离让我进入计划中真正困难的部分又近了一步 现在,正如标题所述,我有了这段代码,我正试图用它来执行另一个java程序,但到目前为止,我所尝试的一切都失败了。我现在有多个文件,没有错误,只是什么都没有发生,什么都没有打开。两者都使用Runtime.getRuntime().exec();和ProcessBuilder=新的ProcessBuilder();我还想知道我可以只执行.jar文件,还是可以编译并执行.java文件?如果是,怎么做? 因此,是的,如果您能帮助解决问题,我们将不胜感激 多谢各位 编辑:更新了代码,我似乎离它越来越近了。这些目录现在似乎可以工作了。只是我得到了一个内置的错误系统,它无法找到Java-Jar 我目前掌握的代码如下:Java 获取ProcessBuilder=新建ProcessBuilder();要工作,请帮忙,java,Java,昨天在StackOverflow的帮助下,我很感激,可惜我还不能投票。我能够从一个Java程序中创建一个Java程序,这离让我进入计划中真正困难的部分又近了一步 现在,正如标题所述,我有了这段代码,我正试图用它来执行另一个java程序,但到目前为止,我所尝试的一切都失败了。我现在有多个文件,没有错误,只是什么都没有发生,什么都没有打开。两者都使用Runtime.getRuntime().exec();和ProcessBuilder=新的ProcessBuilder();我还想知道我可以只执行.j
import java.io.File;
import javax.swing.JOptionPane;
public class SelfWrite {
public static void main(String args[]) {
System.out.println("Working Directory = " +
System.getProperty("user.dir"));
try {
String newLine = new String(System.getProperty("line.separator"));
File f = new File("C:/Users/Powermaniac/workspace/Newfolder/");
String fileDir = new String (f.getAbsolutePath());
File j = new File("C:/Windows/System32/java" + "-jar");
String javaDir = new String(j.getAbsolutePath());
File tempDir = new File (fileDir);
File tempjavaDir = new File (javaDir);
if (tempDir.exists());
JOptionPane.showMessageDialog(null, "File Exists");
if (tempjavaDir.exists());
JOptionPane.showMessageDialog(null, "Java Exists");
if (tempDir.exists()) {
String program = new String(fileDir + "UserInput.jar");
try {
ProcessBuilder pb = new ProcessBuilder("C:/Windows/System32/java", "-jar", program);
pb = pb.directory(new File(fileDir));
File temp = pb.directory();
String currentWorkingDirectory = "Current working directory: " + temp.toString();
JOptionPane.showMessageDialog(null, currentWorkingDirectory);
Process p = pb.start();
int UserInputExitCode = p.waitFor();
if (UserInputExitCode == 0) {
JOptionPane.showMessageDialog(null, "User Input Running Successfully!");
}
else {
JOptionPane.showMessageDialog(null, "User Input Exit Code: " + UserInputExitCode +
newLine + "Something went awry during UserInput.jar execution!");
}
}
catch(Exception e) {
JOptionPane.showMessageDialog(null, "User Input installation failed!" + newLine +
"Couldn't find \"Java -Jar\" in the Standard Software directory.");
}
}
else {
JOptionPane.showMessageDialog(null, "Can't find the Java -Jar directory!" +
newLine + "Program will now exit.");
}
}
catch (Exception e) {
JOptionPane.showMessageDialog(null, "Something has gone awry while running the processbuilder class!");
}
}
}
好吧,在其他一些友好人士的帮助下,我找到了答案。虽然我有一种轻微的感觉,我以前有过,但它不起作用。我想我也知道为什么。所以基本上你可以打开,或者看起来你不能运行一个runnable.jar,如果没有GUI,那么看起来你不能,因为没有任何东西出现,所以没有任何迹象表明发生了什么事情 不管怎样,这是为将来需要它的任何人提供的代码,并找到此帖子:
ProcessBuilder pb = new ProcessBuilder("java", "-jar", "C:/Users/Powermaniac/workspace/Newfolder/BasicGUI.jar");
pb.start();
在catch(exception e){do e.printStackTrace();中将JOptionPage.showMessageDialog更改为System.out.println,这样它将打印正在发生的异常,然后您可以识别错误并尝试移动我不确信
String fileDir=new String(System.getProperty(“C:/Users/Powermaniac/workspace/User Input/”);
和字符串javaDir=新字符串(System.getProperty(“C:/Windows/System32”)+“java-jar”)
将返回有效信息程序员,我如何检查返回有效目录或文件的内容?我基本上对Java编程非常陌生,过去所做的工作令人烦恼地被遗忘了。无论如何,谢谢。file fileDir=new file(“C:/Users/Powermaniac/workspace/User Input/”);fileDir.exists();
…另外,花点时间了解ProcessBuilder
的工作原理。ProcessBuilder
的每个参数都是一个参数,该参数已经过了命令的处理。如果使用C:/Windows/System32/java-jar
ProcessBuilder
将尝试将其作为单个程序执行(显然不是这样),而应该使用新的ProcessBuilder(“C:/Windows/System32/java”、“-jar”、…);