TornadoFX与lowagie iText库兼容性问题求助
TornadoFX应用添加lowagie iText 2.1.7后无法启动,无报错信息
我用TornadoFX(JavaFX + Kotlin)开发桌面应用,在依赖里加入com.lowagie:itext:2.1.7后,应用彻底无法启动——既没有报错输出,甚至连Main函数都进不去。有没有人碰到过类似问题?
依赖配置如下:
dependencies { implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.72") implementation("org.jetbrains.kotlin:kotlin-reflect:1.3.72") implementation("no.tornado:tornadofx:1.7.20") implementation("org.jetbrains.exposed:exposed:0.10.4") implementation("mysql:mysql-connector-java:8.0.18") implementation("org.slf4j:slf4j-api:1.7.26") implementation("ch.qos.logback:logback-classic:1.2.3") implementation("ch.qos.logback:logback-core:1.2.3") implementation("com.google.code.gson:gson:2.8.5") implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.5") implementation("org.jetbrains.kotlinx:kotlinx-coroutines-javafx:1.3.5") implementation("net.sourceforge.jtds:jtds:1.3.1") implementation("com.lowagie:itext:2.1.7") implementation files("libs/OpenCV${opencv_version}/opencv-${opencv_version}.jar", "libs/RXTXcomm/RXTXcomm.jar") runtimeOnly files("libs/OpenCV${opencv_version}/x64/opencv_java${opencv_version}.dll", "libs/RXTXcomm/rxtxSerial.dll") }
可能的原因与解决方案
- 依赖冲突:iText 2.1.7是超老旧版本(2009年发布),它依赖的
bouncycastle等库,大概率和TornadoFX/JavaFX间接引入的同类型库存在版本冲突,导致启动时类加载静默失败,没有报错输出。 - 替换兼容版本:直接弃用
com.lowagie:itext:2.1.7,改用官方后续分支com.itextpdf:itextpdf,比如5.5.13.3版本,这个版本和现代JavaFX项目兼容性更好,不会触发严重冲突。 - 排查类加载问题:如果必须用旧版本,添加JVM启动参数
-verbose:class输出类加载日志,定位卡死的具体类;也可以用./gradlew dependencies查看依赖树,找出冲突模块后通过exclude排除,示例:implementation("com.lowagie:itext:2.1.7") { exclude group: "org.bouncycastle" } - 调整日志配置:项目用了logback但可能没捕获启动阶段日志,把logback日志级别调到
DEBUG,或者添加JVM参数-Dlogback.configurationFile=path/to/your/logback.xml,确保启动日志能输出到控制台或文件。
内容的提问来源于stack exchange,提问作者MarceloSouza
相关产品推荐
相关产品推荐

