簡體   English   中英

找不到或加載主類-我無法運行從Ant創建的.jar文件

[英]Could not find or load main class- I cannot run my .jar file created from Ant

我已經為此苦苦掙扎了兩天。 我創建了一個非常簡單的HelloWorld類,以測試是否可以正常運行,但無法運行。 我收到錯誤消息-無法找到或加載主類...它可以從Eclipse運行或從腳本運行任務。 但是雙擊.jar或從CMD運行它會給我錯誤。 此錯誤的可能原因有哪些? 類路徑? 環境變量? 目錄結構? 請幫忙!

package com.hellojava;

public class HelloWorld {

 public static void main(String[] args)
 {
    System.out.println("Hello World!");
 }

}

我的build.xml

<project name="TestProject" basedir="." default="main">

<property name="src.dir"     value="src"/>
<property name="build.dir"   value="build"/>
<property name="classes.dir" value="${build.dir}/classes"/>
<property name="jar.dir"     value="${build.dir}/jar"/>
<property name="main-class"  value="com.hellojava.HelloWorld"/>

<target name="clean">
    <delete dir="${build.dir}"/>
</target>

<target name="compile">
    <mkdir dir="${classes.dir}"/>
    <javac srcdir="${src.dir}" destdir="${classes.dir}"/>
</target>

<target name="jar" depends="compile">
    <mkdir dir="${jar.dir}"/>
    <jar destfile="${jar.dir}/${ant.project.name}.jar" basedir="${classes.dir}">
        <manifest>
            <attribute name="Main-Class" value="${main-class}"/>
        </manifest>
    </jar>
</target>

<target name="run" depends="jar">
    <java jar="${jar.dir}/${ant.project.name}.jar" fork="true"/>
</target>

<target name="clean-build" depends="clean,jar"/>

<target name="main" depends="clean,run"/>

run:
 [java] Hello World!
main:
BUILD SUCCESSFUL
Total time: 5 seconds

Manifest-Version: 1.0
Ant-Version: Apache Ant 1.9.2
Created-By: 1.7.0_11-b21 (Oracle Corporation)
Main-Class: com.hellojava.HelloWorld

**編輯:java -jar TestProject.jar可以,但是javaw -jar TestProject.jar不能。 但是,我解決了問題-請參閱我發布的答案。

運行jar文件的常用語法是java -jar TestPractice.jar 如果失敗,則需要進行一些分析。

  1. 使用WinZip打開jar文件,然后解壓縮到一個臨時目錄。
  2. 檢查是否存在HelloWorld.class文件,並且該文件位於正確的目錄中。
  3. 檢查是否有一個META-INF / MANIFEST.MF文件,並且其中包含讀取Main-Class的行:com.hellojava.HelloWorld我的Ant腳本中看不到會生成該文件的任何內容。

如果一切正常,您的程序將運行。

有關更多信息,請看一下如何使用Ant創建捆綁的可運行jar

問題解決了!

我必須將注冊表更改為正在使用的正確Java版本。 它設置為我的comp中的Java的早期版本。

我可以通過cmd運行.jar文件,但不能雙擊它們

另外,我注意到javaw -jar file.jar對我不起作用,而java -jar file.jar卻對我有效。 我通過“ open with”更改了打開.jar文件的程序,並選擇了Java而不是javaw。 現在,這解決了問題-我確實還有一個問題。 我想知道為什么javaw不起作用,但是現在我很高興這可以起作用:)

我有同樣的問題。 應用程序在我的PC上運行正常,但是在某些PC上,我遇到相同的錯誤。 嘗試在您的應用無法正常運行的機器上升級Java運行時。 例如,我使用JRE7,並且在無法使用應用程序的PC上安裝了Java 1.6。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM