Intereting Posts
Android: Kotlin TypeCastException: null не может быть применено к ненулевому типу kotlin.String «Не удалось запустить активность» в тесте эспрессо Использование библиотеки kotlin в Java-коде Котлин: сумма BigDecimal в списке Android Build Crashes после подписанной сборки Метод, который не вызывается, без ошибок, может быть, связан с дженериками / сопутствующими объектами / наследованием / параллелизмом / вложением Как превратить Long в Int в Kotlin? Не удалось найти класс 'kotlin.jvm.internal.DefaultConstructorMarker' Как интерпретировать и переводить код kotlin в java? Внутренняя функция покрытия кода Android – не генерировать значения-v26 Как получить доступ к членам класса с таким же именем в функции расширения в Kotlin android Приложения, разрешенные намерениями с дополнительными «EXTRA_INITIAL_INTENTS», не показаны Как проверить общий тип в Котлин? Соглашение о кодировании для пустых функций, которые необходимо переопределить в Котлине

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) } } } 

Solutions Collecting From Web of "NoClassDefFoundError во время выполнения"