我正在使用Gradle來設置一個使用itext 7生成pdf文件的測試項目。java.lang.NoClassDefFoundError:com/itextpdf/kernel/pdf/PdfWriter itext和gradle
如果我在Netbeans IDE中運行我的主類,一切正常;創建一個「結果」文件夾,並在裏面我可以找到生成的PDF文件。
但是,如果我清理並建立項目,進入project_folder/build/libs並嘗試執行java -jar mypdfproject.jar文件,我得到這個錯誤=> java.lang.NoClassDefFoundError:com/itextpdf/kernel/pdf/PdfWriter
這是我的主類(MyPdfMain.class)
package com.mypackage;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.Paragraph;
import java.io.File;
import java.io.IOException;
public class MyPdfMain {
public static final String DEST = "results/pdf/hello_word.pdf";
/**
* @param args the command line arguments
* @throws java.io.IOException
*/
public static void main(String[] args) throws IOException {
File file = new File(DEST);
file.getParentFile().mkdirs();
//Initialize PDF writer
PdfWriter writer = new PdfWriter(DEST);
//Initialize PDF document
PdfDocument pdf = new PdfDocument(writer);
// Initialize document
Document document = new Document(pdf);
//Add paragraph to the document
document.add(new Paragraph("Hello World!"));
//Close document
document.close();
}
}
,這是的build.gradle
apply plugin: 'java'
sourceCompatibility = '1.8'
[compileJava, compileTestJava]*.options*.encoding = 'UTF-8'
if (!hasProperty('mainClass')) {
ext.mainClass = 'com.mypackage.MyPdfMain'
}
repositories {
mavenCentral()
}
dependencies {
compile group: 'com.itextpdf', name: 'kernel', version: '7.0.0'
compile group: 'com.itextpdf', name: 'io', version: '7.0.0'
compile group: 'com.itextpdf', name: 'layout', version: '7.0.0'
compile group: 'com.itextpdf', name: 'forms', version: '7.0.0'
compile group: 'com.itextpdf', name: 'pdfa', version: '7.0.0'
compile group: 'com.itextpdf', name: 'pdftest', version: '7.0.0'
testCompile group: 'junit', name: 'junit', version: '4.10'
}
task copyToLib(type: Copy) {
into "$buildDir/libs/lib"
from configurations.runtime
}
jar{
dependsOn copyToLib
manifest {
attributes 'Main-Class': 'com.mypackage.MyPdfMain'
// attributes 'Class-Path': configurations.compile.collect { it.getName() }.join(' ')
}
}
,你可以看到我創建了一個任務複製所有德pendecies罐子到構建/庫/ lib目錄
任務copyToLib(類型:複製){ 爲 「$ buildDir /庫/ lib目錄」 從configurations.runtime }
,並設置罐子{ dependsOn copyToLib }
但是錯誤仍然是一樣的。
我認爲這應該是一個類路徑錯誤,但我不知道如何以及如何在Gradle中設置類路徑。我如何從終端運行我的項目?
如果「應用」部分插件幫助了,你可以投票我的回答了;-) – gaganbm
確定。我剛剛投票支持你,但不幸的是我得到的聲望低於15點,所以我認爲沒有人能看到我的投票。 – Mavek