NoClassDefFoundError во время выполнения

Я получаю сообщение об ошибке «NoClassDefFoundError» во время выполнения после создания моего проекта с использованием gradle build .

Программа запускается, и все, кажется, работает до тех пор, пока она не дойдет до точки, где предполагается читать некоторые pdf-файлы, а затем я получаю исключение класса, не найденное. Когда я отлаживаю свое приложение в intellij, все работает правильно.

Когда я разархивирую файл jar, я вижу, что в него не включен PDFFile.class . Как ни странно, когда я создаю тот же проект в Linux, у меня нет этой проблемы.

 java.lang.NoClassDefFoundError: PDFFile at PDFViewModel$loadPdfList$1.invoke(GUI.kt:107) at PDFViewModel$loadPdfList$1.invoke(GUI.kt:87) at tornadofx.FXTask.call(Lib.kt:219) at javafx.concurrent.Task$TaskCallable.call(Task.java:1423) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.lang.Thread.run(Thread.java:748) Caused by: java.lang.ClassNotFoundException: PDFFile at java.net.URLClassLoader.findClass(URLClassLoader.java:381) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 6 more 

У меня есть PDFFile.

 data class PDFFile(val path: String, val name: String, var pages: Int?, var progress: Int?) class PDFViewModel : ItemViewModel<PDFFile>() { val pdfFiles = SimpleObjectProperty<ObservableList<PDFFile>>() private val files = mutableListOf<PDFFile>() fun loadPdfList() { files.clear() val pdfPath = File(cfg.getProperty("pdf_path")) if (pdfPath.isDirectory) { val pdfList = pdfPath.listFiles().filter { FilenameUtils.getExtension(it.name).toLowerCase() == "pdf" } runAsync { // Set progress to 0 just in case directory is empty updateProgress(0.0, 1.0) if (pdfList.isNotEmpty()) { pdfList.forEachIndexed { index, file -> updateMessage("Loading ${file.name}") // Load basic data about pdf files PDDocument.load(file.absoluteFile).use { document -> files.add(PDFFile(file.absolutePath, file.nameWithoutExtension, document.numberOfPages, 0)) updateProgress((index + 1.0), pdfList.size.toDouble()) } } } } ui { pdfFiles.set(files.observable()) } } } } 

И в моем файле gradle.build я добавил:

 jar { manifest { attributes 'Implementation-Version': version, 'Main-Class': 'PDFStripApp' } from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } } } 

У меня был класс в другом файле с именем PdfFile и в Linux, поскольку файловая система чувствительна к регистру, и у нее не было никаких проблем с этим. В окнах PDFFile.class и PdfFile.class – одно и то же, и, следовательно, в файл jar не PdfFile.class должным образом.