Я использую Gradle для установки тестового проекта, который использует itext 7 для генерации pdf-файлов.java.lang.NoClassDefFoundError: com/itextpdf/kernel/pdf/PdfWriter itext и gradle
Если я запускаю свой основной класс в Netbeans IDE, все работает нормально; создается папка «results», и внутри нее я могу найти сгенерированный 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 банки в строит/Libs/Библиотека
задачи copyToLib (тип: Копировать) { в "$ buildDir/LIBS/Библиотека" от configurations.runtime }
и установить банку { dependsOn copyToLib }
, но ошибка все тот же.
Я думаю, что это должна быть ошибка класса, но я не знаю, как и где установить путь к классам в Gradle. Как я могу запустить свой проект с терминала?
Если «приложение» плагин часть помогла, вы можете проголосовать мой ответ до ;-) – gaganbm
Ok. Я только что проголосовал за вас, но, к сожалению, у меня меньше 15 очков репутации, поэтому я думаю, что никто не может видеть мой голос. – Mavek