当前位置: 首页 > 面试题库 >

如何在Java程序中运行Java源代码

苗康平
2023-03-14
问题内容

我已经编写了一些代码来编译Java源代码。然后生成.class文件。问题是如何运行它?

例如,我可以设置程序和类的名称,可以使用prog p = new
prog(),但是在这种情况下,类文件在编译之前尚不存在。不太确定该怎么办。有人可以给我建议吗?

顺便说一句,该类如下所示:

public void compile{
  JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();  
  int compilationResult = compiler.run(null, null, null, fileToCompile);  
}

public void run(){
  Prog prog = new Prog();
  prog.run();
}

问题答案:

如果只想运行它,则可以使用Runtime.exec或ProcessBuilder启动Java进程
。这些将创建一个单独的Java进程来运行您的Java程序。这更可能是您想要的。您基本上可以做到:

>java someClass

从您的应用程序中。此链接可能会有所帮助。

如果您想实际加载类文件并在当前应用程序中使用它,我认为与此类似的事情或动态加载Java类应该有所帮助。基本上(直接从链接中进行一些修改):

public class MainClass {

  public static void main(String[] args){

    ClassLoader classLoader = MainClass.class.getClassLoader();

    try {
        Class aClass = classLoader.loadClass("MyClass");
        System.out.println("aClass.getName() = " + aClass.getName());
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    }

}

加载该类后,您将拥有一个Class对象,并且可以aClass通过调用来创建该类的实例aClass.newInstance(),这就像

MyClass newObj = new MyClass()

或者,您可以使用Class对象公开的任何其他方法。

正如davmac指出的那样,以上代码示例假定正在加载的代码在应用程序的类路径中。如果要运行的类文件不在您的类路径中,则可能需要调查URLClassLoader



 类似资料:
  • 我从未运行过Java代码,我想运行我将在下面发布的代码。有人能告诉我如何在Ubuntu上运行代码,包括我应该安装什么东西吗? 我还想修改它,把一个心脏图像放在这个家伙的胸前,写下我爱你。有人能帮我吗?

  • 问题内容: 我想知道如何在Java中运行PHP代码。使用ScriptEngine,我可以运行JavaScript: 为此,我导入了库。我相信要运行PHP,我必须导入一个类似的库,并将上面代码的第三行更改为extension 。不幸的是,我不知道这是哪个库。我已经用Google搜索并找到了答案,并遇到了PHP / Java Bridge库,但是我认为这并不是我要找的,因为它专注于通过PHP运行Jav

  • 问题内容: 我想使用另一个Java程序打开Java GUI。 它已成功编译,但无法运行。它说“无法加载主类”。这是我的代码: HelloWorld类: 问题答案: 您的代码可能失败的地方有很多,例如,由于某种原因它可能无法编译;可能不在操作系统的搜索路径中;该命令可能会失败,因为参数看起来不正确。 我相信您的命令应该看起来更像或者应该在目录的上下文中执行… 您确实需要尽一切努力来诊断潜在的问题,例

  • (我是java BTW的新手!)

  • 问题内容: 我有一个Main.java和Test.java类,它们要编译并在Test.java代码中运行Main.java。这是我的代码 我只在Main.java中打印“ ok”,但是此代码不打印任何内容。问题是什么 ? 问题答案: 我修改了代码以包括一些检查: 这是Main.java: 当一切都很好时,它就可以工作: 现在,例如,如果在Main.java中出现一些错误: 它仍然显示“ ok”,因

  • 我使用JDK8制作了一个java应用程序,然后从JAR制作了一个可执行文件。 我已经使用launch4j从jar中创建了一个exe,并且没有可能选择Java11作为最新版本。 那么我怎样才能让这个exe在Java11上运行呢?