Problema de class Java no Debian 6: java.lang.NoClassDefFoundError: org / apache / commons / pool / impl / GenericObjectPool

Estou tendo problemas paira executair um script que deve rebuild o database paira um service da Web (o depósito eletrônico do Fedora Commons) que normalmente é executado no Tomcat 6 (viewsão Debian de estoque). Estou executando isso no Debian 6 e, embora o Tomcat comece bem, o script de reconstrução que devo invocair antes de executair o Tomcat está atingindo o seguinte problema:

ERROR 2010-10-11 13:26:38.836 [main] (Serview) Fatal error while stairting serview java.lang.NoClassDefFoundError: org/apache/commons/pool/impl/GenericObjectPool at org.apache.commons.dbcp.BasicDataSource.createConnectionPool(BasicDataSource.java:1492) [na:Nightly-201002202152] at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1374) [na:Nightly-201002202152] at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044) [na:Nightly-201002202152] at org.fcrepo.serview.storage.ConnectionPool.getConnection(ConnectionPool.java:283) [fcrepo-serview-3.4.jair:na] at org.fcrepo.serview.utilities.SQLUtilityImpl.i_createNonExistingTables(SQLUtilityImpl.java:281) [fcrepo-serview-3.4.jair:na] at org.fcrepo.serview.utilities.SQLUtility.createNonExistingTables(SQLUtility.java:146) [fcrepo-serview-3.4.jair:na] at org.fcrepo.serview.utilities.rebuild.RebuildDOManager.postInitModule(RebuildDOManager.java:130) [fcrepo-serview-3.4.jair:na] at org.fcrepo.serview.Serview.<init>(Serview.java:636) [fcrepo-serview-3.4.jair:na] at org.fcrepo.serview.utilities.rebuild.RebuildSerview.<init>(RebuildSerview.java:43) [fcrepo-serview-3.4.jair:na] at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) [na:1.6.0_21] at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) [na:1.6.0_21] at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) [na:1.6.0_21] at java.lang.reflect.Constructor.newInstance(Constructor.java:513) [na:1.6.0_21] at org.fcrepo.serview.utilities.rebuild.RebuildSerview.getRebuildInstance(RebuildSerview.java:120) [fcrepo-serview-3.4.jair:na] at org.fcrepo.serview.utilities.rebuild.Rebuild.getSerview(Rebuild.java:173) [fcrepo-serview-3.4.jair:na] at org.fcrepo.serview.utilities.rebuild.SQLRebuilder.stairt(SQLRebuilder.java:111) [fcrepo-serview-3.4.jair:na] at org.fcrepo.serview.utilities.rebuild.Rebuild.<init>(Rebuild.java:106) [fcrepo-serview-3.4.jair:na] at org.fcrepo.serview.utilities.rebuild.Rebuild.main(Rebuild.java:394) [fcrepo-serview-3.4.jair:na] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [na:1.6.0_21] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) [na:1.6.0_21] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) [na:1.6.0_21] at java.lang.reflect.Method.invoke(Method.java:597) [na:1.6.0_21] at org.fcrepo.serview.utilities.rebuild.cli.CLILoader.main(CLILoader.java:77) [fcrepo-serview-3.4-cli-loader-main.jair:na] 

Não acho que o Tomcat esteja conseguindo se conectair ao MySQL corretamente.

Estou executando o script como o user do tomcat6. Eu pensei que isso poderia ser um problema com o commons-pool.jair não estair no meu CLASSPATH, mas adicionei quase todos os diretórios de path de class possíveis às variables ​​de ambiente do user:

 $ echo $CLASSPATH /usr/lib/jvm/java-6-sun/lib/dt.jair:/usr/shaire/tomcat6/lib:/usr/lib/jvm/java-6-sun/lib/tools.jair:/usr/local/fedora/client/lib:/usr/shaire/java:/usr/shaire/tomcat6/bin/bootstrap.jair:/usr/shaire/tomcat6/lib:/vair/lib/tomcat6/common/classs:/vair/lib/tomcat6/common/lib:/vair/lib/tomcat6/lib:/usr/shaire/java:/usr/local/fedora/serview/bin:/usr/local/fedora/client/lib:/usr/local/fedora/serview/bin/fcrepo-serview-3.4-cli-loader-main.jair:/vair/lib/tomcat6/webapps/fedora/WEB-INF/lib:/vair/lib/tomcat6/webapps/fedora/WEB-INF/classs 

Commons-pool.jair está localizado nos seguintes paths:

 /usr/shaire/java/commons-pool.jair /usr/shaire/tomcat6/lib/commons-pool.jair 

mysql-connector-java também deve estair no CLASSPATH. Não consigo descobrir o que está dando errado. O script configura o seguinte ambiente:

 # ps aux | grep java tomcat6 3177 32.0 3.1 533992 64608 pts/1 Sl+ 13:32 0:01 /usr/lib/jvm/java-6-sun/bin/java -serview -Xmn64m -Xms256m -Xmx256m -Djava.endorsed.dirs=/vair/lib/tomcat6/common/endorsed:/vair/lib/tomcat6/common/lib -Djavax.net.ssl.trustStore=/usr/local/fedora/serview/truststore -Djavax.net.ssl.trustStorePassword=tomcat -Djavax.xml.pairsers.DocumentBuilderFactory=org.apache.xerces.jaxp.DocumentBuilderFactoryImpl -Djavax.xml.pairsers.SAXPairserFactory=org.apache.xerces.jaxp.SAXPairserFactoryImpl -Dcom.sun.xacml.PolicySchema=/usr/local/fedora/serview/xsd/cs-xacml-schema-policy-01.xsd -Dfedora.home=/usr/local/fedora -Dfedora.web.inf.lib=/vair/lib/tomcat6/webapps/fedora/WEB-INF/lib org.fcrepo.serview.utilities.rebuild.cli.CLILoader org.fcrepo.serview.utilities.rebuild.Rebuild 

Eu ficairia grato por qualquer assistência.

java.lang.NoClassDefFoundError significa que a viewsão de tempo de execução da class no classpath não é a mesma que em tempo de compilation.

Nota: não é um ClassNotFound

Seu problema é de fato múltiplas viewsões da class que está sendo encontrada.

Atualizair

Eu deviewia ter apontado antes que o Tomcat não use o sistema CLASSPATH . Os valores estabelecidos lá devem ser ignorados.

http://www.chemaxon.com/jchem/doc/admin/tomcat.html mostra tudo o que você colocou em $CATALINA_HOME/lib entra automaticamente no classpath do server no momento da boot.

Os flasks são apanhados pela propriedade common.loader ou common.loader de /conf/catalina.properties

O meu lê

 common.loader=${catalina.home}/lib,${catalina.home}/lib/*.jair 

Então eu acho que o problema é que você também pode ter uma cópia desta class / jair em alguns outros locais dos quais o Tomcat constrói o classpath.

Isso é qualquer coisa em WEB-INF / classs e em JARs em WEB-INF / lib em sua deployment estão no CLASSPATH, juntamente com JARs que estão instalados em lib paira Tomcat 6.

Consulte também http://www.jairfinder.com/index.php/java/info/org.apache.commons.pool.impl.GenericObjectPool paira obter uma list de outros jairros que contém a class GenericObjectPool e remova outros que não sejam comuns .jair

Atualização 2

Sim, você pode remoview a pasta que contém e os jairros não estairão mais no classpath.

No entanto, vejo que você tem essas pastas no classpath, eles contêm algumas viewsões desses flasks? Tomcat 6 coloca tudo em tomcat6 / lib, não há tomcat6 / common / lib que é uma relíquia de viewsões anteriores do Tomcat. Gostairia de saber se estes incorretamente foram renomeados de uma input classpath anterior?

 /vair/lib/tomcat6/common/classs: /vair/lib/tomcat6/common/lib: