0

休眠.cfg.xml

 <session-factory>
                <property name="hibernate.connection.driver_class">org.postgresql.Driver</property>
                <property name="hibernate.connection.url">jdbc:postgresql://localhost:5432/thetable</property>
                <property name="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</property>
                <property name="hibernate.connection.username">postgres</property>
                <property name="hibernate.connection.password">postgres123</property>
                <property name="hibernate.show_sql">true</property>
                <property name="hibernate.format_sql">true</property>
</session-factory>

pom.xml

<dependency>
            <groupId>org.apache.tapestry</groupId>
            <artifactId>tapestry-hibernate</artifactId>
            <version>${tapestry-release-version}</version>
</dependency>
<dependency>
        <groupId>postgresql</groupId>
        <artifactId>postgresql</artifactId>
        <version>9.1-901.jdbc4</version>
</dependency>

错误

HTTP ERROR 500

Problem accessing /blah/balahhh. Reason:

    Exception constructing service 'ValueEncoderSource': Error invoking service contribution method org.apache.tapestry5.hibernate.HibernateModule.contributeValueEncoderSource(MappedConfiguration, boolean, HibernateSessionSource, Session, TypeCoercer, PropertyAccess, LoggerSource): Exception constructing service 'HibernateSessionSource': Error invoking constructor public org.apache.tapestry5.internal.hibernate.HibernateSessionSourceImpl(org.slf4j.Logger,java.util.List): Could not initialize class org.hibernate.annotations.common.reflection.java.JavaReflectionManager 

它在我使用“hsqldb”之前工作过。但现在我得到了显示的错误。

4

2 回答 2

0

第一印象是您缺少类路径中的驱动程序类。这可能是由许多因素引起的,包括 Maven、您的部署等。

在您的 AppModule 中,在您的bind方法中(如果没有则创建)尝试以下操作:

public static void bind(ServiceBinder binder)
{
    try
    {
        Class.forName("org.postgresql.Driver");
        System.out.println("driver found in classpath");
    }
    catch(Throwable e)
    {
        System.out.println("driver not found in classpath");
        e.printStackTrace();
    }

    ...
}
于 2012-11-07T22:28:34.720 回答
0

这个项目的问题是我定义了 pom.xml 来下载不同的依赖库。但是 log4j 已经从两个不同的存储库(tapestry 和 tika)下载了两次。版本不同。所以我所做的是检查 maven 树并为它下载旧 slf4j 的地方添加了排除项。

        <dependency>
            <groupId>org.apache.tika</groupId>
            <artifactId>tika-parsers</artifactId>
            <version>1.2</version>
            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-api</artifactId>
                </exclusion>
            </exclusions>          
        </dependency>
        <dependency>    
于 2012-11-08T07:30:29.407 回答