Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于启动新流程的Java术语_Java_Process - Fatal编程技术网

用于启动新流程的Java术语

用于启动新流程的Java术语,java,process,Java,Process,我正在用java启动一个新进程,它使用runTime.exec。我从网上复制了一些代码,如果我只是更改正在访问的类的名称,它使用的类路径似乎对我不起作用。代码行: Process process = runTime.exec( "java -classpath C:\\projects\\workspace\\testing\\bin Program"); 我试图访问的类是Program.java。有没有一种方法可以让任何计算机都可以使用,只要它们

我正在用java启动一个新进程,它使用
runTime.exec
。我从网上复制了一些代码,如果我只是更改正在访问的类的名称,它使用的类路径似乎对我不起作用。代码行:

Process process = runTime.exec(
                       "java -classpath C:\\projects\\workspace\\testing\\bin Program");
我试图访问的类是
Program.java
。有没有一种方法可以让任何计算机都可以使用,只要它们有一个名为
Program
的类


那么,我应该在任何计算机中引用类
程序
的区域写些什么呢?

在运行java类之前,应该首先编译它

javac Program.java
它将生成一个
程序.class
文件。 然后在代码中:

// create a file with the working directory we wish
File dir = new File("C:\\projects\\workspace\\testing\\bin");

// create a process and execute java and currect environment
Process process = Runtime.getRuntime().exec("java Program", null, dir);
我试图访问的类是Program.java。有没有一种方法可以让任何计算机都可以使用,只要它们有一个名为Program的类

  • 你(或他们)需要编译程序。(与C、C++和许多其他编程语言没有区别)

  • 他们需要在机器上安装Java

  • 他们需要正确地调用命令,这取决于Java的安装位置、您(编译的)程序的位置等等

  • 您可以通过多种方式为最终用户简化此过程。例如,您可以实现一个安装程序,该安装程序在标准位置安装软件,并提供一个启动器或包装器脚本来运行该软件


    以编程方式启动Java应用程序(根据您的示例)有两个额外的问题:

    • 您需要知道
      java
      命令安装在何处(除非您可以信赖搜索路径是正确的)

    • 您需要知道应用程序的字节码文件和相关库安装在何处

    这些事情通常通过创建包装器脚本或将信息放入特定于应用程序的配置文件来处理


    为什么我们需要在创建新流程时添加“java程序”

    因为这是主流Java的工作方式。Java编译器(
    javac
    )生成“字节码”文件,而不是传统的(特定于平台的)可执行文件。您需要
    java
    命令来运行字节码文件,因为操作系统本身不知道如何处理它们



    1-需要更正的是:1)java
    命令的路径名,2)类路径必须包括应用程序所需的类目录和JAR文件。。。如果路径正确,3)必须正确指定类名。如果您是从Java以编程方式调用命令,那么就不能假定
    exec
    知道如何正确地将命令字符串拆分为参数

    检查这个问题,它会帮助您:您还需要检查环境变量“是否设置为…”为什么我们需要在创建新进程时添加“java程序”,以及实际文件在dir变量中的位置?