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



好吧,我知道这是一个非常常见,非常简单的问题,但我的问题出现在相当不寻常的情况下。(我无法在互联网上找到解决方案的情况。)所以,我有一些源代码,我通过JavaCompiler编程编译。然后尝试使用Runtime执行编译后的代码。(即Runtime.getRuntime().exec(String[])。)然而,当我试图执行上述代码时,我得到Could not find or load main class.。有问题的源代码遵循这个基本模型:

package compiledCode;
public class Compiled
{
    public Compiled(){}
    public static void main(String[] args)
    {
        System.out.println("Hello!! ;D");
    }
}

即使这段代码也不会执行。我还是会得到相同的错误。提前感谢你的帮助。:)

*编辑:具体步骤如下:

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

  2. 我使用我的一个自定义方法,我已经测试并确保它可以编译文件(并可选地从中获得一个Class对象,尽管,由于特定的原因,我不能这样做)到一个. Class文件。(使用JavaCompiler API)

  3. 我然后使用Runtime.getRuntime.exec(new String[]{"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"});

第三行中的String操作有点混乱,但我已经检查了三遍以确保它可以工作-它确实可以工作。的代码。toClass()位,到这里。

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

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

这在JDK文档中有描述:http://docs.oracle.com/javase/6/docs/technotes/tools/windows/java.html

相关内容

  • 没有找到相关文章

最新更新