我创建了一个控制台应用程序。这个应用程序可以生成pdf。我使用itextpdf。我在build gradle中添加了:
compile group: 'com.itextpdf', name: 'itextpdf', version: '5.5.10'
当我在命令行中启动程序时,我会看到一个日志:
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.NoClassDefFoundError: com/itextpdf/text/DocumentException
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Unknown Source)
at java.lang.Class.privateGetMethodRecursive(Unknown Source)
at java.lang.Class.getMethod0(Unknown Source)
at java.lang.Class.getMethod(Unknown Source)
at sun.launcher.LauncherHelper.validateMainClass(Unknown Source)
at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)
Caused by: java.lang.ClassNotFoundException: com.itextpdf.text.DocumentException
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 7 more
当我在IntelliJ中启动应用程序时,它会正常工作。
建筑格雷德尔:
group 'Harmonogramy'
version '1.0-SNAPSHOT'
task wrapper(type: Wrapper) {
gradleVersion = '3.1'
distributionUrl = "https://services.gradle.org/distributions/gradle-$gradleVersion-all.zip"
}
apply plugin: 'java'
sourceCompatibility = 1.5
repositories {
mavenCentral()
}
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.11'
// https://mvnrepository.com/artifact/mysql/mysql-connector-java
compile group: 'mysql', name: 'mysql-connector-java', version: '5.1.34'
// https://mvnrepository.com/artifact/commons-dbutils/commons-dbutils
compile group: 'commons-dbutils', name: 'commons-dbutils', version: '1.6'
// https://mvnrepository.com/artifact/org.apache.commons/commons-csv
compile group: 'org.apache.commons', name: 'commons-csv', version: '1.4'
// https://mvnrepository.com/artifact/com.itextpdf/itextpdf
compile group: 'com.itextpdf', name: 'itextpdf', version: '5.5.10'
// https://mvnrepository.com/artifact/net.sf.opencsv/opencsv
compile group: 'net.sf.opencsv', name: 'opencsv', version: '2.3'
}
jar {
archiveName = 'Harmonogramy.jar'
manifest {
attributes 'Main-Class': 'Main',
'Class-Path': configurations.runtime.files.collect { "lib/$it.name" }.join(' '),
'Implementation-Version': version
}
from(configurations.compile.collect { it.isDirectory() ? it : zipTree(it) })
}
您需要将库打包到应用程序中,使其可运行,并具有运行时所需的所有依赖项。例如,在build.gradle
查看您的代码时,我感觉您没有遵循src/main/java结构,因此gradle不知道从哪里获取源文件,因为默认的源文件是src/main/java。您可以修改源集,但我建议只遵循结构约定。
apply plugin: 'java'
sourceCompatibility = 1.5
targetCompatibility = 1.5
version '1.0-SNAPSHOT'
repositories {
mavenCentral()
}
dependencies {
compile 'mysql:mysql-connector-java:5.1.34'
compile 'commons-dbutils:commons-dbutils:1.6'
compile 'org.apache.commons:commons-csv:1.4'
compile 'com.itextpdf:itextpdf:5.5.10'
compile 'net.sf.opencsv:opencsv:2.3'
testCompile 'junit:junit:4.11'
}
jar {
archiveName = 'Harmonogramy.jar'
manifest {
attributes 'Main-Class': 'Main',
'Class-Path': configurations.runtime.files.collect { "lib/$it.name" }.join(' '),
'Implementation-Version': version
}
from(configurations.compile.collect { it.isDirectory() ? it : zipTree(it) })
}
jar任务将扩展默认的gradle任务来构建jar,并将在其中打包所有编译依赖项-请记住指出您的主类以使其可执行。
或者你可以尝试使用这里的影子插件https://github.com/johnrengelman/shadow
问题内容: 我正在尝试通过以下servlet生成动态PDF文件。 但我收到以下错误: 我正在使用 weblogic应用程序服务器8.1 ....我正在使用 iTextPDF 。所以我已经为jar文件设置了CLASSPATH。 请告诉我为什么会出现此错误????我已经花了很多时间。没有遇到小问题。请帮助我。 谢谢 完成建议的操作后,出现以下错误 问题答案: 先前的答案告诉您,缺少了一个jar,这不是
问题内容: 当我按如下方式运行程序时,我遇到了异常, java -jar MQprogram.jar 我已经正确设置了classpath,它引用了所有必需的jar,“ com.ibm.mq.jmqi.jar”也引用了具有MQException的classpath。 我仍然不清楚错误在哪里。 问题答案: 这几乎总是由客户端安装不完整和/或CLASSPATH问题共同引起的。许多人抓住了jar文件,而不
mvn清洁编译 然后,为了执行jar,我运行了以下命令: Java-CP target/classes org.wso2.adaptive_concurrency_control.adaptiveConcurrencyControl
我在尝试运行程序时出现以下错误。这实际上是Hackerrank“第六天让我们回顾”挑战的提交。 线程“main”java中出现异常。util。java的NoTouchElementException。util。扫描仪。throwFor(Scanner.java:862)访问java。util。扫描仪。下一步(Scanner.java:1371)是解决方案。main(Solution.java:10
我试图在Android Studio 0.3.0中编译我的Android项目。今天我得到以下错误: 做一些网络搜索让我相信这个问题在某种程度上与JUnit有关。然而,我的项目中没有使用JUnit。也许我无意中打开了某个选项?在这种情况下,如何在我的项目中禁用单元测试?有什么想法吗?
我正在尝试一个使用jdbc和Spring连接到数据库的例子,并得到下面的异常。请指教。 例外情况: 主要类: 道类: spring xml: