Ver Mensaje Individual
  #4 (permalink)  
Antiguo 09/03/2010, 03:05
Pelirr
 
Fecha de Ingreso: diciembre-2008
Mensajes: 233
Antigüedad: 15 años, 4 meses
Puntos: 1
Respuesta: "${lib.dir} not found" en build.xml en eclipse

He seguido avanzando, y por lo que veo no me encuentra una tabla, o no puede obtener el valor inicial para el generador, y no encuentro nada en San Google. Aquí están mis archivos:

hibernate.cfg.xml
Código:
 <!DOCTYPE hibernate-configuration SYSTEM 
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> 

<hibernate-configuration> 
   <session-factory> 
      <property name="hibernate.connection.driver_class"> 
         org.hsqldb.jdbcDriver 
      </property> 
      <property name="hibernate.connection.url"> 
         jdbc:hsqldb:hsql://localhost 
      </property> 
      <property name="hibernate.connection.username"> 
         sa 
      </property> 
      <property name="hibernate.dialet"> 
         org.hibernate.dialect.HSQLDialect 
      </property> 
       
      <!-- Usando la conexión de c3p0 --> 
      <!-- Valor mínimo de conexiones JDBC que C3PO puede mantener --> 
      <property name="hibernate.c3p0.min_size">5</property> 
      <!-- Valor máximo de conexiones que el pool puede mantener, si se pasa, lanzará una excepcion --> 
      <property name="hibernate.c3p0.max_size">20</property> 
      <!-- Periodo de tiempo después del cual la conexión será borrada --> 
      <property name="hibernate.c3p0.timeout">300</property> 
      <property name="hibernate.c3p0.max_statements">50</property> 
      <property name="hibernate.c3p0.idle_text_period">3000</property> 
       
    
       
      <!-- Para mostrar e imprimir SQL y stdout --> 
      <property name="show_sql">true</property> 
      <property name="format_sql">true</property> 
       
      <!-- lista de mapeo de documentos xml --> 
      <mapping resource="hello/Message.hbm.xml"/> 
   </session-factory> 
</hibernate-configuration>

Message.hbm.xml
Código:
  
<?xml version="1.0"?> 
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN" 
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 

<!-- Este documento xml le dice a hibernate que establezca una relación de 
persistencia entre la clase Message y la tabla MESSAGES, relacionando cada 
campo, y generando el esquema de la bbdd --> 
<hibernate-mapping> 
   <class name="hello.Message" table="MESSAGES" > 
      <!-- Para que no dé error al crear la etiqueta class, debe tener al menos 
      el parámetro id dentro de ella--> 
      <id name="id" column="MESSAGE_ID"> 
         <generator class="increment" />          
      </id> 
      <property name="text" column="MESSAGE_TEXT"/> 
      <many-to-one name="nextMessage" cascade="all" 
      column="NEXT_MESSAGE-ID" foreign-key="FK_NEXT_MESSAGE"/> 
   </class> 
</hibernate-mapping>

y build.xml
Código:
 
<project name="HelloWorldJP" default="compile" basedir="."> 
    
   <!-- Nombre y versión del proyecto--> 
   <property name="proj.name" value="HelloWorldJP"/> 
   <property name="proj.version" value="1.0"/> 
    
   <!-- Propiedades globales para este constructor --> 
   <property name="src.java.dir" value="src"/> 
   <property name="lib.dir" value="lib"/> 
   <property name="build.dir" value="bin"/> 
    
   <!-- Declaración del classpath --> 
   <path id="project.classpath"> 
      <fileset dir="${lib.dir}"> 
         <include name="**/*.jar"/> 
         <include name="**/*.zip"/>          
      </fileset> 
   </path> 

   <!-- Accesos directos útiles --> 
   <patternset id="meta.files"> 
      <include name="**/*.xml"/> 
      <include name="**/*.properties"/> 
   </patternset> 
    
   <!-- Limpieza --> 
   <target name="clean"> 
      <delete dir="${build.dir}"/> 
      <mkdir dir="${build.dir}"/> 
   </target> 
    
   <!-- Compilar las fuentes de java --> 
   <target name="compile" depends="clean"> 
      <mkdir dir="${build.dir}"/> 
      <javac srcdir="${src.java.dir}" destdir="${build.dir}" nowarn="on"> 
         <classpath refid="project.classpath"/> 
      </javac> 
   </target> 
    
   <!-- Copia de metadatos para construir el classpath --> 
   <target name="copymetafiles"> 
      <copy todir="${build.dir}"> 
         <fileset dir="${src.java.dir}"> 
            <patternset refid="meta.files"/> 
         </fileset> 
      </copy> 
   </target> 
    
   <!-- Ejecutando HelloWorldJP --> 
   <target name="run" depends="compile, copymetafiles" 
      description="Build and run HelloWorldJP"> 
      <java fork="true" classname="hello.HelloWorld" 
         classpathref="project.classpath"> 
         <classpath path="${build.dir}"/> 
      </java> 
   </target> 
    
   <!-- Schema Export --> 
    
   <taskdef name="hibernatetool" classname="org.hibernate.tool.ant.HibernateToolTask" classpathref="project.classpath"/> 
    
   <target name="schemaexport" depends="compile, copymetafiles" 
            description="Exports a generated schema to DB and file"> 
      <hibernatetool destdir="${basedir}"> 
         <classpath path="${build.dir}"/> 
         <configuration configurationfile = "${build.dir}/hibernate.cfg.xml"/> 
         <!-- El exportador es hbm2ddl. Si drop=true, las declaraciones drop de sql son generadas primero y todas las tablas y ctes que 
         existan seran borradas antes de eso. Si create=true, las declaraciones sql son creadas después, creando 
         todas las tablas y ctes. Si export=true, todas las declaraciones ddl son directamente ejecutadas en bbdd, 
         abriendo una conexion con la bbdd encontrada en el fichero de configuracion--> 
         <hbm2ddl drop="true" create="true" export="true" 
            outputfilename="helloworld-ddl.sql" delimiter=";" format="true"/> 
      </hibernatetool> 
   </target> 

   <target name="dbmanager" description="Start HSQLDB manager"> 
      <java classname="org.hsqldb.util.DatabaseManagerSwing" 
         fork="yes" classpathref="project.classpath" failonerror="true"> 
         <arg value="-url"/> 
         <arg value="jdbc:hsqldb:hsql://localhost/"/> 
         <arg value="-driver"/> 
         <arg value="org.hsqldb.jdbcDriver"/> 
      </java> 
   </target> 

</project>

que creo son los más importantes. Y éste es el error:
...
[java] 09-mar-2010 9:47:51 org.hibernate.stat.StatisticsImpl logSummary
[java] INFO: query cache misses: 0
[java] 09-mar-2010 9:47:51 org.hibernate.stat.StatisticsImpl logSummary
[java] INFO: max query time: 0ms
[java] Hibernate:
[java] select
[java] max(MESSAGE_ID)
[java] from
[java] MESSAGES
[java] 09-mar-2010 9:47:52 org.hibernate.util.JDBCExceptionReporter logExceptions
[java] ADVERTENCIA: SQL Error: -22, SQLState: S0002
[java] 09-mar-2010 9:47:52 org.hibernate.util.JDBCExceptionReporter logExceptions
[java] GRAVE: Table not found in statement [select max(MESSAGE_ID) from MESSAGES]
[java] Exception in thread "main" org.hibernate.exception.SQLGrammarException: could not fetch initial value for increment generator
[java] at org.hibernate.exception.SQLStateConverter.convert( SQLStateConverter.java:90)
[java] at org.hibernate.exception.JDBCExceptionHelper.conver t(JDBCExceptionHelper.java:66)
[java] at org.hibernate.id.IncrementGenerator.getNext(Increm entGenerator.java:131)
[java] at org.hibernate.id.IncrementGenerator.generate(Incre mentGenerator.java:6
[java] at org.hibernate.event.def.AbstractSaveEventListener. saveWithGeneratedId(AbstractSaveEventListener.java :122)
[java] at org.hibernate.event.def.DefaultSaveOrUpdateEventLi stener.saveWithGeneratedOrRequestedId(DefaultSaveO rUpdateEventListener.java:210)
[java] at org.hibernate.event.def.DefaultSaveEventListener.s aveWithGeneratedOrRequestedId(DefaultSaveEventList ener.java:56)
[java] at org.hibernate.event.def.DefaultSaveOrUpdateEventLi stener.entityIsTransient(DefaultSaveOrUpdateEventL istener.java:195)
[java] at org.hibernate.event.def.DefaultSaveEventListener.p erformSaveOrUpdate(DefaultSaveEventListener.java:5 0)
[java] at org.hibernate.event.def.DefaultSaveOrUpdateEventLi stener.onSaveOrUpdate(DefaultSaveOrUpdateEventList ener.java:93)
[java] at org.hibernate.impl.SessionImpl.fireSave(SessionImp l.java:563)
[java] at org.hibernate.impl.SessionImpl.save(SessionImpl.ja va:551)
[java] at org.hibernate.impl.SessionImpl.save(SessionImpl.ja va:547)
[java] at hello.HelloWorld.main(Unknown Source)
[java] Caused by: java.sql.SQLException: Table not found in statement [select max(MESSAGE_ID) from MESSAGES]
[java] at org.hsqldb.jdbc.Util.throwError(Unknown Source)
[java] at org.hsqldb.jdbc.jdbcPreparedStatement.<init>(Unkno wn Source)
[java] at org.hsqldb.jdbc.jdbcConnection.prepareStatement(Un known Source)
[java] at org.hibernate.jdbc.AbstractBatcher.getPreparedStat ement(AbstractBatcher.java:534)
[java] at org.hibernate.jdbc.AbstractBatcher.prepareSelectSt atement(AbstractBatcher.java:145)
[java] at org.hibernate.id.IncrementGenerator.getNext(Increm entGenerator.java:107)
[java] ... 11 more
[java] Java Result: 1
BUILD SUCCESSFUL
Total time: 3 seconds

Si alguien puede echarme un cable, lo agradecería mucho. Un saludo