Приложение работает, но «Не удалось найти или загрузить основной класс» при запуске jarJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Приложение работает, но «Не удалось найти или загрузить основной класс» при запуске jar

Сообщение Anonymous »

Пришло время для одного из теоретически самых основных вопросов! Я перепробовал все классические и простые решения, и у меня заканчиваются идеи.
Итак, мое приложение работает хорошо, когда я запускаю его непосредственно в своей IDE, но когда я пытаюсь выполнить fatJar ( с классическим java -jar locationOfJar) я получаю традиционное сообщение «Ошибка: не удалось найти или загрузить основной класс w.x.y.z.App»
Что я пробовал:
  • Я четырежды проверил, что мой основной класс четко определен в моем build.gradle.kts (части приведу позже). Я даже написал этот пост с реальным копированием/вставкой и изменил все с помощью «замены», чтобы проверить, действительно ли они имеют одно и то же имя
  • Я распаковал банку и проверил, есть ли там основной класс с правильным именем
  • В разархивированной банке я проверил, что каждый импорт присутствует основной класс
  • Я проверил, что .jar содержит META-INF/MANIFEST.MF, он содержит 2 строки: Manifest- Версия: 1.0 и основной класс: w.x.y.z.App
  • когда я пытаюсь запустить jar (а не fatJar), ​​я получаю сообщение об ошибке " нет основного атрибута манифеста», в то время как манифест тоже там!
Я уверен, что это глупая ошибка, но я не могу его найти! Есть идеи?
Мой build.gradle.kts:
plugins {
id("java")
}

java {
sourceCompatibility = JavaVersion.VERSION_17
}

tasks.register("fatJar") {
group = "build"
archiveClassifier.set("all")
from(sourceSets.main.get().output)

dependsOn(configurations.runtimeClasspath)
from({
configurations.runtimeClasspath.get().map { if (it.isDirectory) it else zipTree(it) }
})

manifest {
attributes["Main-Class"] = "w.x.y.z.App"
}
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
}

dependencies {
...
}

repositories {
mavenCentral()
maven {
name = "Artifact"
url = uri(project.findProperty("mavenRepositoryUrl") as String)
credentials {
username = project.findProperty("mavenRepositoryUsername") as String
password = project.findProperty("mavenRepositoryPassword") as String
}
}
}

Начало класса приложения:
package w.x.y.z;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import ...

public class App {

LoggerFactory.getLogger(App.class);

public static void main(String[] args) {
LOG.info("===== START =====");
...
}
}


Подробнее здесь: https://stackoverflow.com/questions/792 ... nching-jar
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»