2

私の教授は、この割り当てのメインメソッドを外部jarに提供することを決定し、バックエンドのコードを作成することになっています。このjarをプロジェクトに取り込み、Eclipse内で実行することに問題はありませんが、実行可能なjarをエクスポートしようとすると、次のエラーが発生します。

「指定された起動構成からメインメソッドが見つかりませんでした」

Eclipseで実行するたびにメインメソッドを確実に見つけることができるので、これはばかげているようですが、何が欠けていますか?jarを開いてManifest.mfファイルを取得し、外部jar内のメインであるクラスの名前を指定しようとしましたが、それでも見つけることができません。

プロジェクトのビルドパスとクラスパスにもjarを追加しましたが、違いはないようです。

マニフェストファイルには次のように書かれています。

Manifest-Version: 1.0
Class-Path: .

これは間違っていると思いますが、どうすれば正しく設定できますか?

-編集-

ビルド時にEclipseによって生成されるANTファイルは次のとおりです。

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<project default="create_run_jar" name="Create Runnable Jar for Project Lab 1">
<!--this file was created by Eclipse Runnable JAR Export Wizard-->
<!--ANT 1.7 is required                                        -->
<target name="create_run_jar">
    <jar destfile="C:/lab.jar" filesetmanifest="mergewithoutmain">
        <manifest>
            <attribute name="Main-Class" value="edu.wmich.cs1120.la1.solution_gui.MainWindow"/>
            <attribute name="Class-Path" value="."/>
        </manifest>
        <zipfileset excludes="META-INF/*.SF" src="C:/LA1_GUI.jar"/>
        <fileset dir="C:/bin"/>
    </jar>
</target>

さて、Main-Class属性を何に設定する必要があるかがわかりました。そのため、Manifest.mfを編集して、それが機能することを反映します。しかし、私はまだ混乱しています。特に次の行によって混乱しています。

filesetmanifest="mergewithoutmain"
zipfileset excludes

プロジェクトのメインを指定した場合、なぜそれを行うのですか?

4

2 に答える 2

0

クラスパスを「。」として使用します。マニフェストでは、作成したjarを実行しようとしているのと同じディレクトリに教授が提供したjarが必要です。それ以外の場合は、eclipse/antにすべての依存関係を含めるように指示する方法がおそらくあります。

-UPDATE-依存関係からMainメソッドを使用しているため、antビルドxmlで以下を指定し、再ビルドする必要があります。

 filesetmanifest="merge"

これは、他のマニフェストのメインセクションで新しいjarのマニフェストにマージされます。

于 2012-09-19T21:03:08.600 に答える
0

Eclipseから独立してプログラムを実行する方法はいくつかあります。

  1. すでに学んだように、Antを使用します。

  2. コマンドラインを使用する。教授のクラスファイルを自分のjarファイルに含めたか、2つの別々のjarファイルがあるかによって、正確なコマンドは異なります。

    a。単一のjarファイルで、実行できます

    java -jar MyJar.jar
    

    これは、マニフェストファイルにMain-Class属性が設定されていることを前提としています。そうでない場合は、メインクラスを手動で指定できます。

    java -jar MyJar.jar MainClass
    

    b。2つのjarを使用する場合は、2番目のjarがクラスパスに含まれていることを確認する必要があります。

    java -jar ProfsJar.jar -cp MyJar.jar
    

    ここでも、必要に応じて、メインクラスを手動で指定できます。

    java -jar ProfsJar.jar -cp MyJar.jar MainClass
    
  3. オペレーティングシステムのファイルエクスプローラーをダブルクリックします。JavaインストールでOSが正しく構成されている場合は、jarファイルをダブルクリックするだけです。これは、Main-Class属性がjarのマニフェストで正しく設定されていることも前提としています。

于 2012-09-19T22:50:44.893 に答える