Поширена проблема, з якою стикаються нові розробники Java, полягає в тому, що їхні програми не працюють із повідомленням про помилку: Could not find or load main class ...
Що це означає, що це викликає, і як ви повинні це виправити?
Поширена проблема, з якою стикаються нові розробники Java, полягає в тому, що їхні програми не працюють із повідомленням про помилку: Could not find or load main class ...
Що це означає, що це викликає, і як ви повинні це виправити?
Відповіді:
java <class-name>
синтаксис командиПерш за все, потрібно зрозуміти правильний спосіб запуску програми за допомогою команди java
(або javaw
).
Нормальний синтаксис 1 такий:
java [ <options> ] <class-name> [<arg> ...]
де <option>
варіант командного рядка (починаючи з символу "-"), <class-name>
є повністю кваліфікованим іменем класу Java і <arg>
є довільним аргументом командного рядка, який передається вашій програмі.
1 - Є деякі інші синтаксиси, які описані наприкінці цієї відповіді.
Повнокваліфіковане ім’я (FQN) для класу умовно записується так, як і у вихідному коді Java; напр
packagename.packagename2.packagename3.ClassName
Однак деякі версії java
команди дозволяють використовувати косої риски замість періодів; напр
packagename/packagename2/packagename3/ClassName
який (заплутано) схожий на ім’я файлу, але не є одним. Зауважте, що термін повністю кваліфікована назва - це стандартна термінологія Java ... не те, що я щойно придумав, щоб вас бентежити :-)
Ось приклад того, як java
повинна виглядати команда:
java -Xmx100m com.acme.example.ListUsers fred joe bert
Вищезазначене призведе до того, що java
команда виконає наступне:
com.acme.example.ListUsers
класу.main
метод з підписом , типом повернення та модифікаторами, заданими public static void main(String[])
. (Зверніть увагу, ім'я аргументу методу НЕ є частиною підпису.)String[]
.Коли ви отримуєте повідомлення "Не вдалося знайти або завантажити основний клас ...", це означає, що перший крок не вдався. java
Команда не змогла знайти клас. І справді, "..." у повідомленні буде цілком кваліфіковане ім'я класу, яке java
шукається.
То чому б він не зміг знайти клас?
Перша вірогідна причина полягає в тому, що ви, можливо, вказали неправильну назву класу. (Або ... правильне ім'я класу, але в неправильній формі.) Розглядаючи приклад, наведений вище, тут є різні помилкові способи вказати назву класу:
Приклад №1 - проста назва класу:
java ListUser
Коли клас оголошено в такому пакеті, як com.acme.example
, то ви повинні використовувати повне ім'я класу, включаючи ім'я пакета в java
команді; напр
java com.acme.example.ListUser
Приклад №2 - ім'я файлу або шлях, а не ім'я класу:
java ListUser.class
java com/acme/example/ListUser.class
Приклад №3 - назва класу з корпусом неправильним:
java com.acme.example.listuser
Приклад №4 - помилка друку
java com.acme.example.mistuser
Приклад №5 - ім'я вихідного файлу (крім Java 11 або новішої версії; див. Нижче)
java ListUser.java
Приклад №6 - ви повністю забули ім'я класу
java lots of arguments
Друга ймовірна причина полягає в тому, що ім'я класу правильне, але що java
команда не може знайти клас. Щоб зрозуміти це, потрібно зрозуміти поняття "класової". Це добре пояснюється документацією Oracle:
java
документація командиОтже ... якщо ви правильно вказали ім'я класу, наступне, що потрібно перевірити, це те, що ви вказали класний шлях правильно:
java
команди. Перевірте правильність імен каталогів та імен файлів JAR.java
команди.;
в Windows та :
інших. Якщо ви використовуєте неправильний роздільник для своєї платформи, ви не отримаєте явного повідомлення про помилку. Натомість ви отримаєте неіснуючий файл або каталог на шляху, який буде мовчазно ігноруватися. .)Коли ви кладете каталог на classpath, він умовно відповідає кореню простору імен кваліфікованих. Класи розташовані в структурі каталогів під цим коренем, шляхом зіставлення повністю кваліфікованого імені до імені шляху . Наприклад, якщо "/ usr / local / acme / class" знаходиться на шляху до класу, тоді, коли JVM шукає клас, який називається com.acme.example.Foon
, він буде шукати файл ".class" з таким ім'ям шляху:
/usr/local/acme/classes/com/acme/example/Foon.class
Якби ви поставили "/ usr / local / acme / class / com / acme / example" на classpath, то JVM не змогла б знайти клас.
Якщо FQN ваших класів є com.acme.example.Foon
, то JVM шукатиме "Foon.class" у каталозі "com / acme / example":
Якщо структура вашого каталогу не відповідає іменуванню пакета згідно з вищевказаним зразком, JVM не знайде вашого класу.
Якщо ви спробуєте перейменувати клас, перемістивши його, це також вийде з ладу ... але стек-трак винятків буде іншим. Можна сказати щось подібне:
Caused by: java.lang.NoClassDefFoundError: <path> (wrong name: <name>)
оскільки FQN у файлі класу не відповідає тому, що завантажувач класів очікує знайти.
Навести конкретний приклад, припустивши, що:
com.acme.example.Foon
клас,/usr/local/acme/classes/com/acme/example/Foon.class
,/usr/local/acme/classes/com/acme/example/
,тоді:
# wrong, FQN is needed
java Foon
# wrong, there is no `com/acme/example` folder in the current working directory
java com.acme.example.Foon
# wrong, similar to above
java -classpath . com.acme.example.Foon
# fine; relative classpath set
java -classpath ../../.. com.acme.example.Foon
# fine; absolute classpath set
java -classpath /usr/local/acme/classes com.acme.example.Foon
Примітки:
-classpath
параметр можна скоротити до -cp
більшості версій Java. Перевірте відповідні записи вручну для java
, javac
і так далі.Класовий шлях повинен включати всі інші (несистемні) класи, від яких залежить ваша програма. (Класи системи розташовуються автоматично, і вам рідко потрібно зайнятися цим.) Щоб основний клас завантажився правильно, JVM повинен знайти:
(Примітка: специфікації JLS та JVM дозволяють деякому простору для JVM завантажувати класи "ліниво", і це може вплинути на викид винятку завантажувача класів.)
Іноді трапляється, що хтось ставить файл вихідного коду в неправильну папку у своєму дереві вихідного коду, або вони залишають package
декларацію. Якщо ви зробите це в IDE, компілятор IDE повідомить вам про це негайно. Аналогічно, якщо ви використовуєте гідний інструмент збірки Java, інструмент запуститься javac
таким чином, що виявить проблему. Однак, якщо ви будуєте свій код Java вручну, ви можете зробити це таким чином, щоб компілятор не помітив проблеми, а отриманий файл ".class" знаходиться не в тому місці, яке ви очікуєте.
Перевірити можна багато речей, і легко щось пропустити. Спробуйте додати -Xdiag
параметр до java
командного рядка (як перше після цього java
). Він виведе різні речі про завантаження класу, і це може запропонувати вам підказки щодо справжньої проблеми.
Також розглянемо можливі проблеми, спричинені копіюванням та вставкою невидимих або не ASCII символів з веб-сайтів, документів тощо. І розглянемо "гомогліфи", дві літери чи символи виглядають однаково ... але ні.
Нарешті, ви, мабуть, можете зіткнутися з цією проблемою, якщо спробувати запустити файл JAR з неправильними підписами в (META-INF/*.SF)
.
java
Існують три альтернативних синтаксиси для запуску програм Java з використанням java command
.
1) Синтаксис, що використовується для запуску "виконуваного" файлу JAR, такий:
java [ <options> ] -jar <jar-file-name> [<arg> ...]
напр
java -Xmx100m -jar /usr/local/acme-example/listuser.jar fred
Ім'я класу вхідної точки (тобто com.acme.example.ListUser
) та шлях класу задаються у МАНІФЕСТІ файлу JAR.
2) Синтаксис запуску програми з модуля (Java 9 та новіших версій) такий:
java [ <options> ] --module <module>[/<mainclass>] [<arg> ...]
Назва класу вхідних точок визначається <module>
самим, або надається необов'язково <mainclass>
.
3) З Java 11 ви можете скласти та запустити один файл вихідного коду та запустити його із наступним синтаксисом:
java [ <options> ] <sourcefile> [<arg> ...]
де (як правило) файл із суфіксом ".java".
Для отримання більш детальної інформації див. Офіційну документацію для java
команди для випуску Java, яку ви використовуєте.
Типовий Java IDE підтримує запуск Java-програм у самому IDE JVM або в дочірньому JVM. Вони, як правило, захищені від цього конкретного винятку, оскільки IDE використовує власні механізми для побудови класного java
маршруту виконання, ідентифікації основного класу та створення командного рядка.
Однак це виняток все-таки може виникнути, якщо ви робите речі за спиною IDE. Наприклад, якщо ви раніше встановили запуск програми для свого додатка Java в Eclipse, а потім перенесли файл JAR, що містить "головний" клас, в інше місце у файловій системі, не повідомляючи Eclipse , Eclipse мимоволі запустить JVM з неправильним класовим шляхом.
Якщо коротко, якщо ви отримаєте цю проблему в IDE, перевірте, чи немає таких речей, як несвіжий стан IDE, пошкоджені посилання на проект чи зламані конфігурації запуску.
Також можна IDE просто плутати. IDE - це надзвичайно складні програми, що містять багато взаємодіючих частин. Багато з цих частин застосовують різні стратегії кешування, щоб зробити IDE в цілому чуйним. Вони іноді можуть піти не так, і одним із можливих симптомів є проблеми під час запуску програм. Якщо ви підозрюєте, що це може статися, варто спробувати інші речі, такі як перезапуск IDE, відновлення проекту тощо.
java -cp ../third-party-library.jar com.my.package.MyClass
; це не працює, замість цього потрібно додати локальну папку до шляху до класу (відокремлено :
, як це:, java -cp ../third-party-library.jar:. com.my.package.MyClass
тоді воно має працювати
java
не сказано, що він не знаходить імпортований клас, а натомість основний клас, який ви намагаєтеся запустити. Це вводить в оману, хоча я впевнений, що в цьому є причина. У мене був випадок, коли java
точно знали, де знаходиться мій клас, проте він не міг знайти жодного із імпортованих класів. Замість того, щоб сказати, він скаржився на те, що не знайшов свого основного класу. Дійсно, дратує.
Якщо ваш вихідний код ім'я HelloWorld.java, ваш компільований код буде HelloWorld.class
.
Ви отримаєте цю помилку, якщо ви будете називати її за допомогою:
java HelloWorld.class
Замість цього скористайтеся цим:
java HelloWorld
javac TestCode.java
за нимjava TestCode
java -classpath . HelloWorld
Якщо ваші класи містяться в пакетах, вам доведеться перейти cd
до кореневого каталогу вашого проекту та запустити, використовуючи повністю кваліфіковане ім’я класу (packageName.MainClassName).
Приклад:
Мої заняття тут:
D:\project\com\cse\
Повноцінне ім’я мого основного класу:
com.cse.Main
Тому я cd
повертаюся до кореневого каталогу проекту:
D:\project
Потім видайте java
команду:
java com.cse.Main
Ця відповідь призначена для того, щоб врятувати початківців програмістів Java від розчарування, спричиненого поширеною помилкою, я рекомендую вам прочитати прийняту відповідь, щоб отримати більш глибокі знання про клас Java.
Якщо ви визначаєте головний клас та основний метод у apackage
, слід запустити його над ієрархічним каталогом, використовуючи повне ім’я класу ( packageName.MainClassName
).
Припустимо, є файл вихідного коду (Main.java):
package com.test;
public class Main {
public static void main(String[] args) {
System.out.println("salam 2nya\n");
}
}
Для запуску цього коду слід розмістити Main.Class
в папці, як каталог ./com/test/Main.Java
. І в кореневому каталозі використовуйте java com.test.Main
.
Коли той самий код працює на одному ПК, але він показує помилку в іншому, найкращим рішенням, який я коли-небудь знайшов, є компілювання, як наступне:
javac HelloWorld.java
java -cp . HelloWorld
javac -classpath . HelloWorld.java
працював би! І це краще рішення у вашому випадку.
Що допомогло мені, було вказати класний шлях у командному рядку, наприклад:
Створіть нову папку, C:\temp
Створіть файл Temp.java в C:\temp
, із таким класом:
public class Temp {
public static void main(String args[]) {
System.out.println(args[0]);
}
}
Відкрийте командний рядок у папці C:\temp
та напишіть таку команду, щоб скласти клас Temp:
javac Temp.java
Запустіть компільований клас Java, додавши -classpath
можливість повідомити JRE, де знайти клас:
java -classpath C:\temp Temp Hello!
java
не дивився на $ CLASSPATH (тому що ти використовував -classpath або -jar) або 2) параметр classpath не був встановлений у середовищі, що не діяло в контексті, що java
був бігати; наприклад, тому що ви не "джерело" файлу, де додано команди setenv у правій оболонці.
Відповідно до повідомлення про помилку ("Не вдалося знайти або завантажити основний клас"), існує дві категорії проблем:
Неможливо знайти основний клас, коли в повному кваліфікованому імені класу є помилка друку або неправильний синтаксис або він не існує на передбаченому шляху .
Не вдалося завантажити основний клас, коли клас неможливо ініціювати основний клас, , як правило, основний клас поширює інший клас, і цей клас не існує на передбаченому шляху.
Наприклад:
public class YourMain extends org.apache.camel.spring.Main
Якщо пружина верблюда не включена, про цю помилку буде повідомлено.
extends
). Я тільки що навчився важко, що коли основний клас не завантажується, тому що він розширює інший, який неможливо було знайти , java не повідомляє, який фактичний клас не знайдено (на відміну від NoClassDefFoundError
). Так так, це трапляється, і це ситуація з підтягуванням волосся, коли ти цього не знаєш.
У мене була така помилка в цьому випадку:
java -cp lib.jar com.mypackage.Main
Він працює ;
для Windows та :
Unix:
java -cp lib.jar; com.mypackage.Main
Main
файл не знаходиться у файлі JAR. -cp lib.jar;
означає те саме, що -cp lib.jar;.
тобто поточний каталог включений на classpath.
Спробуйте -Xdiag .
Відповідь Стіва С прекрасно висвітлює можливі випадки, але іноді визначити, чи не можна було знайти клас або завантажити клас, не так просто. Використовуйте java -Xdiag
(з JDK 7). Це виводить приємну стежку, яка дає підказку, що Could not find or load main class
означає повідомлення повідомлення.
Наприклад, він може вказувати на інші класи, що використовуються основним класом, які не вдалося знайти, і не дозволяли завантажувати основний клас.
Використовуйте цю команду:
java -cp . [PACKAGE.]CLASSNAME
Приклад: Якщо ваше ім'я Hello.class створено з Hello.java, тоді скористайтеся командою нижче:
java -cp . Hello
Якщо ваш файл Hello.java знаходиться в пакеті com.demo, тоді скористайтеся командою нижче
java -cp . com.demo.Hello
З JDK 8 багато разів трапляється, що файл класу присутній в одній папці, але java
команда очікує classpath і з цієї причини ми додаємо -cp .
взяти поточну папку як орієнтир для classpath.
-cp .
непотрібно, тому що якщо $CLASSPATH
це не встановлено, то .
це класний шлях за замовчуванням.
echo %CLASSPATH%
вихід?) І ні, я не можу перевірити, оскільки у мене немає ПК з Windows.
Іноді те, що може спричинити проблему, не має нічого спільного з основним класом, і мені довелося це знайти важко. Я переїхав до бібліотеки, на яку я посилався, і вона мені:
Не вдалося знайти або завантажити основний xxx Linux
Я просто видалив цю посилання, додав її знову, і вона спрацювала нормально.
У цьому випадку у вас є:
Не вдалося знайти або завантажити основний клас ? Classpath
Це тому, що ви використовуєте "-classpath", але тире не є тим самим тире, яке використовується java
в командному рядку. У мене виникла проблема копіювання та вставлення з Блокнота до cmd.
У мене була така ж проблема, і нарешті я виявив свою помилку :) Я використовував цю команду для компіляції, і вона справно працювала:
javac -cp "/home/omidmohebbi/AAAATest/jars/core-1.7.jar:/home/omidmohebbi/AAAATest/jars/javase-1.7.jar:/home/omidmohebbi/AAAATest/jars/qrgen-1.2.jar" qrcode.java
Але ця команда не працювала для мене (я не зміг знайти або завантажити основний клас, qrcode
):
java -cp "/home/omidmohebbi/AAAATest/jars/core-1.7.jar:/home/omidmohebbi/AAAATest/jars/javase-1.7.jar:/home/omidmohebbi/AAAATest/jars/qrgen-1.2.jar" qrcode
Нарешті я просто додав символ ":" наприкінці класового шляху і проблема була вирішена:
java -cp "/home/omidmohebbi/AAAATest/jars/core-1.7.jar:/home/omidmohebbi/AAAATest/jars/javase-1.7.jar:/home/omidmohebbi/AAAATest/jars/qrgen-1.2.jar:" qrcode
Це може допомогти вам, якщо ваш випадок подібний моєму: як початківець я також зіткнувся з цією проблемою, коли намагався запустити програму Java.
Я склав це так:
javac HelloWorld.java
І я спробував запустити також з тим же розширенням:
java Helloworld.java
Коли я видалив .java
та переписав команду на кшталт java HelloWorld
, програма працювала ідеально. :)
Усі відповіді тут спрямовані на користувачів Windows, здається. Для Mac роздільник класового шляху є :
, ні ;
. Оскільки помилка при встановленні classpath за допомогою ;
не викидається, це може виявити важко, якщо ви переходите з Windows на Mac.
Ось відповідна команда Mac:
java -classpath ".:./lib/*" com.test.MyClass
Там, де в цьому прикладі є пакет com.test
і lib
папка, яка також повинна бути включена на classpath.
/*
це потрібно?
Розташування файлу класу: C: \ test \ com \ company
Назва файлу: Main.class
Повністю кваліфікована назва класу: com.company.Main
Команда командного рядка:
java -classpath "C:\test" com.company.Main
Зауважте тут, що шлях до класу НЕ включає \ com \ company
Я витратив гідну кількість часу, намагаючись вирішити цю проблему. Я думав, що я якось неправильно встановлював свій класний шлях, але проблема полягала в тому, що я набрав:
java -cp C:/java/MyClasses C:/java/MyClasses/utilities/myapp/Cool
замість:
java -cp C:/java/MyClasses utilities/myapp/Cool
Я подумав, що значення цілком кваліфікованого означає включати повну назву шляху замість повної назви пакета.
utilities.myapp.Cool
або як його назва пакету, якщо він є.
Спочатку встановіть шлях за допомогою цієї команди;
set path="paste the set path address"
Потім потрібно завантажити програму. Наберіть "cd (ім'я папки)" на збереженому диску і компілюйте його. Наприклад, якщо моя програма зберігається на дисководі D, введіть "D:", натисніть клавішу enter і введіть "cd (назва папки)".
if "cd" helps then it by luck rather than by judgement
. Це неправильно (я вважаю), оскільки java використовує поточний каталог .
як частину classpath за замовчуванням.
Що вирішило проблему в моєму випадку:
Клацніть правою кнопкою миші проект / клас, який потрібно запустити, а потім Run As
-> Run Configurations
. Тоді вам слід виправити наявну конфігурацію або додати нову наступним чином:
відкрийте Classpath
вкладку, натисніть Advanced...
кнопку, а потім додайте bin
папку вашого проекту.
Якщо ви використовуєте Maven для створення файлу JAR, будь ласка, обов'язково вкажіть основний клас у файлі pom.xml:
<build>
<plugins>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>class name us.com.test.abc.MyMainClass</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>
Це конкретний випадок, але оскільки я зайшов на цю сторінку, шукаючи рішення, і не знайшов його, я додам його сюди.
Windows (тестовано з 7) не приймає спеціальних символів (наприклад á
) у назвах класів та пакетів. Linux, однак, робить.
Я це з'ясував, коли створив .jar
NetBeans і спробував запустити його в командному рядку. Він працював у NetBeans, але не в командному рядку.
У Windows .;
на початку поставте значення CLASSPATH.
The. (крапка) означає "шукати в поточному каталозі". Це постійне рішення.
Також ви можете встановити його "один раз" за допомогою набору CLASSPATH=%CLASSPATH%;.
. Це триватиме до тих пір, поки ваше вікно cmd буде відкрито.
Вам справді потрібно зробити це з src
папки. Там ви вводите такий командний рядок:
[name of the package].[Class Name] [arguments]
Скажімо, ваш клас називається CommandLine.class
, і код виглядає так:
package com.tutorialspoint.java;
/**
* Created by mda21185 on 15-6-2016.
*/
public class CommandLine {
public static void main(String args[]){
for(int i=0; i<args.length; i++){
System.out.println("args[" + i + "]: " + args[i]);
}
}
}
Тоді вам слід cd
перейти до папки src, і команда, яку потрібно виконати, виглядатиме так:
java com.tutorialspoint.java.CommandLine this is a command line 200 -100
А вихід у командному рядку буде:
args[0]: this
args[1]: is
args[2]: a
args[3]: command
args[4]: line
args[5]: 200
args[6]: -100
cd
увійти, src
а потім запустити команду, java ../bin com.blah.blah.MyClass
яка працювала на мене. Тож дякую за пораду!
У Java, коли ви іноді запускаєте JVM з командного рядка за допомогою виконуваного файлу java і намагаєтеся запустити програму з класового файлу з загальнодоступним статичним void main (PSVM), ви можете зіткнутися з помилкою нижче, хоча параметр classpath до JVM точний, і файл класу присутній на classpath:
Error: main class not found or loaded
Це відбувається, якщо файл класу з PSVM не вдалося завантажити. Однією з можливих причин цього є те, що клас може реалізовувати інтерфейс або розширювати інший клас, який відсутній на шляху. Як правило, якщо клас не знаходиться на шляху до класу, викинута помилка вказується як така. Але, якщо клас, що використовується, розширений або впроваджений, java не може завантажити сам клас.
Довідка: https://www.computingnotes.net/java/error-main-class-not-found-or-loaded/
При запуску java
з -cp
параметром , як рекламується в Windows PowerShell , ви можете отримати помилку , яка виглядає приблизно так:
The term `ClassName` is not recognized as the name of a cmdlet, function, script ...
Для того, щоб PowerShell прийняв команду, аргументи цього -cp
параметра повинні міститись у лапках, як у:
java -cp 'someDependency.jar;.' ClassName
Формування команди таким чином повинно дозволяти Java обробляти аргументи classpath правильно.
Я також зіткнувся з подібними помилками під час тестування з'єднання Java MongoDB JDBC. Я думаю, що добре узагальнити моє остаточне рішення коротко, щоб в майбутньому хтось міг безпосередньо заглянути в дві команди і добре продовжувати далі.
Припустимо, ви знаходитесь в каталозі, де існує ваш файл Java та зовнішні залежності (файли JAR).
Збірка:
javac -cp mongo-java-driver-3.4.1.jar JavaMongoDBConnection.java
Виконати:
java -cp mongo-java-driver-3.4.1.jar: JavaMongoDBConnection
JavaMongoDBConnection
не має пакета, і 2) ви не змінюєте каталог. Воно, найменше, крихке. І не пояснюючи проблеми, це призведе до того, щоб новачки спробували цей підхід у ситуаціях, коли це не спрацює . Коротше кажучи, це заохочує "методики програмування вуду": en.wikipedia.org/wiki/Voodoo_programming
Гаразд, відповідей уже багато, але ніхто не згадав про випадок, коли винуватці дозволу на файли можуть бути винуватими.
Під час запуску користувач може не мати доступу до файлу JAR або до одного з каталогів шляху. Наприклад, врахуйте:
Файл Jar в /dir1/dir2/dir3/myjar.jar
User1, якому належить файл JAR, може:
# Running as User1
cd /dir1/dir2/dir3/
chmod +r myjar.jar
Але це все ще не працює:
# Running as User2
java -cp "/dir1/dir2/dir3:/dir1/dir2/javalibs" MyProgram
Error: Could not find or load main class MyProgram
Це відбувається тому, що працюючий користувач (User2) не має доступу до dir1, dir2, або javalibs або dir3. Це може призвести до того, що User1 перетворить гайки, коли User1 може бачити файли та отримувати доступ до них, але помилка все ж трапляється для User2.
Я отримав цю помилку після цього. mvn eclipse:eclipse
Це .classpath
трохи заплутало мій файл.
Довелося змінити рядки в .classpath
з
<classpathentry kind="src" path="src/main/java" including="**/*.java"/>
<classpathentry kind="src" path="src/main/resources" excluding="**/*.java"/>
до
<classpathentry kind="src" path="src/main/java" output="target/classes" />
<classpathentry kind="src" path="src/main/resources" excluding="**" output="target/classes" />
Я не зміг вирішити цю проблему за допомогою наведених тут рішень (хоча зазначена відповідь, без сумніву, очистила мої концепції). Я стикався з цією проблемою два рази, і кожен раз, коли я пробував різні рішення (в Eclipse IDE).
main
методами в різних класах свого проекту. Отже, я видалив main
метод з наступних класів.main
методів не усуне проблему. З додатком, який має кілька точок входу, технічно немає нічого поганого.