Java 使用JRebel从Eclipse部署web项目

Java 使用JRebel从Eclipse部署web项目,java,eclipse,jrebel,Java,Eclipse,Jrebel,我正在尝试使用JRebel将多模块Maven项目从Eclipse部署到本地Tomcat。该项目的结构如下: root [packaging: pom] | |--- domain [packaging: jar | |--- manager [packaging: jar] | |--- web [packaging: war] 我已经在3个子模块中的每一个子模块中创建了src/main/resources/rebel.xml。我可以从Eclipse内部将web项目部署到Tomcat(无需使用

我正在尝试使用JRebel将多模块Maven项目从Eclipse部署到本地Tomcat。该项目的结构如下:

root [packaging: pom]
|
|--- domain [packaging: jar
|
|--- manager [packaging: jar]
|
|--- web [packaging: war]
我已经在3个子模块中的每一个子模块中创建了
src/main/resources/rebel.xml
。我可以从Eclipse内部将web项目部署到Tomcat(无需使用JRebel),而不会出现任何问题

但是,如果我这样做,我会得到以下错误:

SEVERE: Exception sending context initialized event to listener instance 
of class com.web.listeners.WebAppListener
java.lang.IllegalArgumentException: Unknown entity: com.model.Role
....
....
Caused by: org.hibernate.MappingException: Unknown entity: com.model.Role
Role
是域项目中的一个持久(JPA/Hibernate)类,它似乎是触发错误的
WebAppListener
中对它的引用:

public class WebAppListener implements ServletContextListener, HttpSessionListener, 
        HttpSessionAttributeListener {

    private RoleManager roleManager;

    @Override
    public void contextInitialized(ServletContextEvent sce) {
        BeanFactory beanFactory = WebApplicationContextUtils.
                    getRequiredWebApplicationContext(sce.getServletContext());
        this.roleManager = beanFactory.getBean(RoleManager.class);

        saveIfAbsent("USER", "Normal User");
    }

    private void saveIfAbsent(String roleName, String roleDescription) {

        if (roleManager.getRole(roleName) == null) {
            Role role = new Role();
            role.setName(roleName);
            role.setDescription(roleDescription);
            roleManager.saveRole(role);
        }
    }
}

执行此代码时,似乎未加载
类,您知道如何解决此问题吗?

您的文件的内容是什么?它们应该看起来像

<classpath>
    <dir name="/absolute/path/to/projectname/target/classes"></dir>
</classpath>

如果您正在使用maven,还可以查看相关主题:

注意:如果rebel.xml还包含对src/main/resources的引用,则有时 混淆了一些框架,如果出现错误,您应该尝试将其从所有rebel.xml文件中删除。例如,以下配置非常常见,但可能并不总是有效:

<classpath>
    <dir name="/absolute/path/to/projectname/target/classes"></dir>
    <dir name="/absolute/path/to/projectname/src/main/resources"></dir>
</classpath>

我通过删除

<dir name="/absolute/path/to/projectname/src/main/resources"></dir>


从域项目中的rebel.xml文件中,如所述

是的,这就是它们的外观。另一个主题不相关,因为我想从IDE内部运行JRebel