Java 无法找到或加载主类-在异常情况下

Java 无法找到或加载主类-在异常情况下,java,compilation,runtime,java-compiler-api,Java,Compilation,Runtime,Java Compiler Api,好吧,我知道这是一个非常常见、非常简单的问题,但我的问题有着非常不寻常的情况。(我无法在互联网上的其他地方找到解决方案)因此,我有一些源代码,我正在通过JavaCompiler以编程方式编译。然后,我尝试在运行时执行编译后的代码。(也就是说,Runtime.getRuntime().exec(String[]))但是,当我尝试执行所述代码时,我get无法找到或加载主类。相关的源代码遵循以下基本模型: package compiledCode; public class Compiled {

好吧,我知道这是一个非常常见、非常简单的问题,但我的问题有着非常不寻常的情况。(我无法在互联网上的其他地方找到解决方案)因此,我有一些源代码,我正在通过
JavaCompiler
以编程方式编译。然后,我尝试在运行时执行编译后的代码。(也就是说,
Runtime.getRuntime().exec(String[])
)但是,当我尝试执行所述代码时,我get
无法找到或加载主类。
相关的源代码遵循以下基本模型:

package compiledCode;
public class Compiled
{
    public Compiled(){}
    public static void main(String[] args)
    {
        System.out.println("Hello!! ;D");
    }
}
即使是那些代码也不会执行。我仍然会犯同样的错误。提前感谢您的帮助。:)

*编辑: 具体步骤如下:

  • 我从上面提到的名为code的字符串中的代码开始。然后我创建一个File对象(在本例中为Compiled.java)

  • 我使用我自己的一个自定义方法,我已经测试并确保它能够将文件编译成一个.Class文件(并且可以选择从中获取一个Class对象,不过,由于特定的原因,我不能这样做)。(使用
    JavaCompiler
    API。)

  • 然后我使用
    Runtime.getRuntime.exec(新字符串[]{“java”,[location of.class file]})来执行它

  • 正是在这一点上,我得到了一个错误

    根据要求,我使用的确切代码是

    ClassFileHelper.toClass(src, "C:/Users/Steven/Desktop/ /Eclipse/Workspace/RoccedGame/ServiceCoder", "ServiceCoder");
    System.out.println("java "+src.getAbsolutePath().substring(0,src.getAbsolutePath().lastIndexOf(".java"))+".class");
    final Process p = Runtime.getRuntime().exec(new String[]{"java",src.getAbsolutePath().substring(0,src.getAbsolutePath().lastIndexOf(".java"))+".class"});
    

    第三行中的字符串操作有点混乱,但我已经进行了三次检查,以确保它能正常工作——确实如此。如果您想查看。
    toClass()
    位的代码,请转到

    您没有将正确的参数传递给
    Runtime.exec()

    传递已编译类文件的实际位置。但是,您应该传递一个类名,如果您的类在包中,您还需要将包层次结构的根作为
    -classpath
    参数传递


    JDK文档中描述了这一点:

    您确定吗??它在我的电脑上运行。:/@steven fontaine您能否向其他人提供您试图运行和编译代码的确切步骤…您是否阅读了问题中关于编程编译的部分?如果您能够发布一个演示问题的自包含程序,以及确切的错误消息,这将非常有帮助,以及将精确参数打印输出到
    Runtime.exec()
    。因为事实上,您已经给出了您认为步骤是什么的描述,但是步骤#3中的参数没有多大意义。@Steven您是否尝试过从命令行运行
    java compiledCode.Compiled