2008-11-21 3 views
2

Я скомпилировал проект java в файл Jar, и у меня проблемы с его запуском.Проблема с файлом Jar

Когда я бегу:

java -jar myJar.jar 

Я получаю следующее сообщение об ошибке

Could not find the main class: myClass 

Файл класса не в корневом каталоге фляги, поэтому я попытался изменить путь основной класс, чтобы соответствовать пути к файлу класса, и я получаю ту же проблему.

Должен ли я сгладить структуру файла? если да, то как это сделать. Я использую Ant для создания Jar-файла, если это используется.

UPDATE

Вот содержимое кувшина и соответствующих Ant разделов, я изменил название фирмы я работаю в «орг»:

META-INF/ 
META-INF/MANIFEST.MF 
dataAccessLayer/ 
dataAccessLayer/databaseTest.class 
org/ 
org/eventService/ 
org/eventService/DatabaseObject.class 
org/eventService/DatabaseObjectFactory.class 
org/eventService/DbEventClientImpl$HearBeatMonitor.class 
org/eventService/DbEventClientImpl.class 
org/eventService/EmptyQueryListException.class 
org/eventService/EventHandlerWorkItem.class 
org/eventService/EventProcessor.class 
org/eventService/EventTypeEnum.class 
org/eventService/EventWorkQueue$MonitorThread.class 
org/eventService/EventWorkQueue$PoolWorker.class 
org/eventService/EventWorkQueue.class 
org/eventService/FailedToLoadDriverException.class 
org/eventService/IConnectionFailureListener.class 
org/eventService/InvalidEventTypeException.class 
org/eventService/JdbcInterfaceConnection.class 
org/eventService/NullArgumentException.class 
org/eventService/OracleDatabaseObject.class 
org/eventService/ProactiveClientEventLogger.class 
org/eventService/ProactiveClientEventLoggerException.class 
org/eventService/PropertyMap.class 
org/eventService/SQLServerDatabaseObject.class 
org/eventService/TestHarness.class 
org/eventService/Utilities.class 

а также муравей цель:

<target name="compile" depends="init" description="compile the source "> 
    <javac srcdir="src" destdir="bin" classpathref="project.class.path"/> 
</target> 
<target name="buildjar" description="build jar file" depends="compile"> 
    <mkdir dir="dist"/> 
    <jar destfile="dist/myJar.jar" basedir="bin" includes="**/*.class" > 
     <manifest> 
      <attribute name="Main-Class" value="org.eventService.ProactiveClientEventLogger"/> 
     </manifest> 
    </jar> 
</target> 
+0

Покажите нам содержание манифеста. Если он не слишком большой, покажите нам список файла jar. – 2008-11-21 15:11:25

+0

Покажите нам содержимое манифеста, а не только создание муравья, создающее его. – 2008-11-21 15:47:23

ответ

6

В вашем файле манифеста, убедитесь, что у вас есть набор атрибутов Main-Class к имени класса кон используя метод main(). Например, если имя класса, присвоенное пакету, равно my.cool.Class, то в вашем манифеста JAR Main-Class должно быть установлено в my.cool.Class.

Также убедитесь, что у вас есть декларация пакета в файлах .java (например, в Class.java, убедитесь, что у вас есть правильная декларация package my.cool;). Кроме того, убедитесь, что ваша иерархия каталогов настроена правильно (my.cool.Class должно быть в $SRC/my/cool/Class.java).

4

Вы должны указать свой основной класс во время создания банка с полным путем, что-то вроде:

<target name="jar" depends="compile"> 
    <delete file="myJar.jar"/> 
    <delete file="MANIFEST.MF"/> 
    <manifest file="MANIFEST.MF"> 
     <attribute name="Main-Class" value="my.package.myClass"/> 
    </manifest> 

    <jar destfile="myJar.jar" 
      basedir="." 
      includes="**/*.class" 
      manifest="MANIFEST.MF" /> 
</target> 
Смежные вопросы