Java编译器api错误
我试图在内存中编译一个实现接口的类 我有一个名为CacheRule的接口(在com/vpfw/proxy/logicRules/CacheRule.class中) 我在内存中编译了一个名为Java编译器api错误,java,compiler-errors,Java,Compiler Errors,我试图在内存中编译一个实现接口的类 我有一个名为CacheRule的接口(在com/vpfw/proxy/logicRules/CacheRule.class中) 我在内存中编译了一个名为CacheRuleBean的类。 如果此类未实现CacheRule,编译将正常工作。但如果此类实现了CacheRule,则错误为: java.lang.NoClassDefFoundError: com/vpfw/proxy/logicRules/CacheRule (wrong name: com/vpfw/
CacheRuleBean
的类。
如果此类未实现CacheRule
,编译将正常工作。但如果此类实现了CacheRule
,则错误为:
java.lang.NoClassDefFoundError: com/vpfw/proxy/logicRules/CacheRule (wrong name: com/vpfw/proxy/logicRules/CacheRuleBean)
奇怪的是,如果我在Eclipse中执行此编译,它会工作。
但是当我从Tomcat执行它时,我得到了前面的错误
这是CacheRule
界面的代码:
package com.vpfw.proxy.logicRules;
public interface CacheRule
{
void executeRule();
}
这是CacheRuleBean
的代码:
package com.vpfw.proxy.logicRules;
import com.vpfw.proxy.logicRules.CacheRule;
public class CacheRuleBean implements CacheRule
{
public void executeRule() {}
}
对compile的调用是:
String[] compilationOptions = { "-cp", classDir };
return (new CompilerService().compile("com.vpfw.proxy.logicRules.CacheRuleBean",
source, compilationOptions));
在哪里
是包含此项目的classDir
文件夹的目录com
(classPath是正确的,如果我在/home/app/WEB-INF/classes
中将此项目的另一个类添加为导入,则编译确定)CacheRuleBean
- 我使用的类的名称是
com.vpfw.proxy.logicRules.CacheRuleBean
是source
的源代码CacheRuleBean
是我对编译器API的实现,除了实现接口的类之外,它对所有类都能完美地工作CompilerService