Получение Не удалось найти основной класс: ошибка в Java, даже если в манифесте указан класс - PullRequest
1 голос
/ 23 февраля 2011

Это очень популярная ошибка, и, поскольку я новичок в Java, я могу неправильно понимать ответы других людей:

В Windows 7 с JRE 1.6

Я скопировал пакет «Первые шаги» из Restlet, чтобы попробовать его в качестве отдельного приложения. У меня есть класс с именем FirstStepsMain (см. Class ниже) и я определил его в моем манифесте (см. Manifest ниже) как «Main-Class: firstSteps.FirstStepsMain». Я установил переменную пути к классам в Windows на \ firstSteps.jar. Подумав, что внешние банки не видны, я переместил их в ту же папку и установил для них пути классов Windows.

Я даже использовал команду -classpath только с первым Jar и всеми тремя Jar:

E:\ResultsDashboard>java -verbose -classpath e:\ResultsDashboard\firstSteps.jar;e:\resultsdashboard\org.restlet.jar;E:\ResultsDashboardorg.restlet.ext.servlet.jar -jar firstSteps.jar

И все же я все еще получаю ошибку. Любая помощь будет оценена.

Класс

package firstSteps;

import org.restlet.Component;
import org.restlet.data.Protocol;

public class FirstStepsMain {

public static void main(String[] args) throws Exception {  
    // Create a new Component.  
    Component component = new Component();  

    // Add a new HTTP server listening on port 8182.  
    component.getServers().add(Protocol.HTTP, 8182);  

    // Attach the sample application.  
    component.getDefaultHost().attach("/firstSteps",  
            new FirstStepsApplication());     
    // Start the component.  
    component.start();  
}
}

Manifest

Manifest-Version: 1.0
Main-Class: firstSteps.FirstStepsMain

Class-Path: firstSteps.jar [note: I added this as a desperate attempt]

Ответы [ 2 ]

0 голосов
/ 23 февраля 2011

Когда вы запускаете программу Java с параметром -jar, параметр -classpath в командной строке будет игнорироваться. Так что не имеет значения, что вы там указали.

Вместо этого вы должны указать путь к классам в файле манифеста. Добавьте все JAR-файлы, которые нужны программе, к атрибуту Class-Path в файле манифеста, но не к самому firstSteps.jar. Например, это должно выглядеть так:

Class-Path: org.restlet.jar org.restlet.ext.servlet.jar

См. Добавление классов в путь к классам файла JAR из учебного пособия Упаковка программ в файлы JAR .

После этого вы сможете запустить его с:

java -jar firstSteps.jar
0 голосов
/ 23 февраля 2011

Вам нужно поставить Main-Class: firstSteps.FirstStepsMain во второй строке файла манифеста.
Пожалуйста, посмотрите Понимание манифеста

...