好吧,我知道这是一个非常常见、非常简单的问题,但我的问题却很不寻常。(我无法在互联网上的其他地方找到解决方案的情况。)所以,我有一些源代码,我正在通过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");
}
}
甚至该代码也不会执行。我仍然得到同样的错误。在此先感谢您的帮助。:)
*编辑:我详细采取的步骤如下:
我从名为 code 的 String 中的上述代码开始。然后我创建一个 File 对象(在本例中为 Compiled.java。)
我使用我已经测试过的自定义方法,并确保它可以编译文件(并且可以选择从中获取 Class 对象,但由于特定原因,我不能这样做。)成.class 文件。(使用
JavaCompiler
API。)然后我用
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"});
第 3 行中的字符串操作有点混乱,但我已经三重检查以确保它有效 - 它确实有效。如果您想查看 . toClass()
比特,去这里。