Java编译器api错误

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/

我试图在内存中编译一个实现接口的类

我有一个名为CacheRule的接口(在com/vpfw/proxy/logicRules/CacheRule.class中)

我在内存中编译了一个名为
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
    文件夹的目录
    /home/app/WEB-INF/classes
    (classPath是正确的,如果我在
    CacheRuleBean
    中将此项目的另一个类添加为导入,则编译确定)
  • 我使用的类的名称是
    com.vpfw.proxy.logicRules.CacheRuleBean
  • source
    CacheRuleBean
    的源代码
  • CompilerService
    是我对编译器API的实现,除了实现接口的类之外,它对所有类都能完美地工作
我会做错什么