当我运行javac -d classes myfiles...
时,我得到这个错误。奇怪的是,在任何文件夹中都没有PooledPreparedStatementHandler.java,在任何源文件中也没有PooledPreparedStatementHandler子字符串。我发现的唯一引用是jaybird jar中的PooledPreparedStatementHandler.class(在我的类路径中使用和需要)。
./lib/jaybird-full-2.1.6.jar (all class files, no java files)
错误如下:
org/firebirdsql/pool/PooledPreparedStatementHandler.java(org/firebirdsql/pool:PooledPreparedStatementHandler.java):32: package org.apache.xalan.lib.sql does not exist
import org.apache.xalan.lib.sql.XConnection;
这是编译命令:
find src/main/java -type f -name "*.java"| xargs javac -target 1.5 -d war/WEB-INF/classes
这个错误的来源是什么?我使用的是oracle javac 1.6.0_26
从源代码来看,看起来PooledPreparedStatementHandler
试图导入org.apache.xalan.lib.sql.XConnection
,所以您依赖于它。当你没有在你的构建类路径上,你会得到这个错误。
看起来您的项目中有一个修改过的Jaybird源代码副本,它与您的其余代码一起编译。原来的Jaybird 2.1.6版本的org.firebirdsql.pool.PooledPreparedStatementHandler
(链接到GitHub上的2.1.6标签)没有引用org.apache.xalan.lib.sql.XConnection
。
它实际上看起来像是在尝试编译PooledPreparedStatementHandler.java
的一个版本,而不仅仅是使用Jaybird jar文件中的类。您可能想要检查find src/main/java -type f -name "*.java"
的结果是否包含任何Jaybird .java
文件(即在org.firebirdsql。*包)。
您还可以尝试在构建时将Xalan-J包含在类路径中。如果PooledPreparedStatementHandler
的副本被包含在目标文件夹中,那么源文件以某种方式被包含在您的构建中。
Mark实际上在评论中给了我答案。如果你想要分数,把它移到答案上。在此之前,JayBird将Xalan 2.3.1列为依赖项。我只需要把它包含在类路径中。