4

プロジェクト用に launch4j を設定しました。WindowsXPで開発したときに、それが機能していたときにそれを使用しました。今、私はMacでもビルドする必要があります:

私のbuild.xml:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<project default="create-exe">

    <property name="platform" value="win32"/>
    <property name="launch4j.dir" location="${basedir}/tools/launch4j/" />

    <include file="create-jar.xml" as="sub"/>

    <target name="create-exe" depends = "sub.create-jar">
        <launch4j configFile="launch4j-config.xml" />
        <delete file="client.win32.jar"/>
    </target>

    <taskdef name="launch4j" classname="net.sf.launch4j.ant.Launch4jTask">
        <classpath>
            <pathelement path="tools/launch4j/launch4j.jar"/>
            <pathelement path="tools/launch4j/lib/xstream.jar"/>
        </classpath>
    </taskdef>
</project>

次の出力が得られます。

create-exe:
 [launch4j] Compiling resources
 [launch4j] Generated resource file...
 [launch4j] LANGUAGE 0, 1
 [launch4j] 2 RCDATA BEGIN "1.6.0\0" END
 [launch4j] 18 RCDATA BEGIN "0\0" END
 [launch4j] 25 RCDATA BEGIN "512\0" END
 [launch4j] 27 RCDATA BEGIN "1024\0" END
 [launch4j] 21 RCDATA BEGIN "http://java.com/download\0" END
 [launch4j] 20 RCDATA BEGIN "32\0" END
 [launch4j] 9 RCDATA BEGIN "true\0" END
 [launch4j] 101 RCDATA BEGIN "An error occurred while starting the application.\0" END
 [launch4j] 102 RCDATA BEGIN "This application was configured to use a bundled Java Runtime Environment but the runtime is missing or corrupted.\0" END
 [launch4j] 103 RCDATA BEGIN "This application requires a Java Runtime Environment\0" END
 [launch4j] 104 RCDATA BEGIN "The registry refers to a nonexistent Java Runtime Environment installation or the runtime is corrupted.\0" END
 [launch4j] 17 RCDATA BEGIN "true\0" END

BUILD FAILED
/Users/fabian/dev/rsys-client/create-win32-exe.xml:9: net.sf.launch4j.BuilderException: net.sf.launch4j.ExecException: java.io.IOException: Cannot run program "./bin/windres": error=2, No such file or directory

launch4j-execution に追加bindir="tools/launch4j/bin"すると、ld と windres が見つかり、出力が次のように変わります。

create-exe:
 [launch4j] Compiling resources
 [launch4j] Linking
 [launch4j] /Users/fabian/dev/rsys-client/tools/launch4j/bin/ld: cannot find ./w32api/crt2.o: No such file or directory
 [launch4j] /Users/fabian/dev/rsys-client/tools/launch4j/bin/ld: cannot find ./head/guihead.o: No such file or directory
 [launch4j] /Users/fabian/dev/rsys-client/tools/launch4j/bin/ld: cannot find ./head/head.o: No such file or directory
 [launch4j] /Users/fabian/dev/rsys-client/tools/launch4j/bin/ld: cannot find ./w32api/libmingw32.a: No such file or directory
 [launch4j] /Users/fabian/dev/rsys-client/tools/launch4j/bin/ld: cannot find ./w32api/libgcc.a: No such file or directory
 [launch4j] /Users/fabian/dev/rsys-client/tools/launch4j/bin/ld: cannot find ./w32api/libmsvcrt.a: No such file or directory
 [launch4j] /Users/fabian/dev/rsys-client/tools/launch4j/bin/ld: cannot find ./w32api/libkernel32.a: No such file or directory
 [launch4j] /Users/fabian/dev/rsys-client/tools/launch4j/bin/ld: cannot find ./w32api/libuser32.a: No such file or directory
 [launch4j] /Users/fabian/dev/rsys-client/tools/launch4j/bin/ld: cannot find ./w32api/libadvapi32.a: No such file or directory
 [launch4j] /Users/fabian/dev/rsys-client/tools/launch4j/bin/ld: cannot find ./w32api/libshell32.a: No such file or directory

BUILD FAILED
/Users/fabian/dev/rsys-client/create-win32-exe.xml:9: net.sf.launch4j.BuilderException: net.sf.launch4j.ExecException: Exec failed (1): /Users/fabian/dev/rsys-client/tools/launch4j/bin/ld -mi386pe --oformat pei-i386 --dynamicbase --nxcompat --no-seh --subsystem windows -s ./w32api/crt2.o ./head/guihead.o ./head/head.o /var/folders/n5/44dkvyzd00z0h5mklk_pwtch0000gn/T/launch4j3026065429236284429o ./w32api/libmingw32.a ./w32api/libgcc.a ./w32api/libmsvcrt.a ./w32api/libkernel32.a ./w32api/libuser32.a ./w32api/libadvapi32.a ./w32api/libshell32.a -o /Users/fabian/dev/rsys-client/Kassa.exe

Total time: 6 seconds
4

5 に答える 5

6

次のような経験がある場合:

error=2, No such file or directory

64 ビット Linux でwindresを実行する際の問題を解決するには、32 ビット ライブラリをインストールする必要があります。Linux Mint では、パッケージ ia32-libs を次のようにインストールしました。

sudo apt-get install ia32-libs
于 2014-05-13T02:52:30.173 に答える
2

私もこの問題を抱えていたので、launch4j コードを修正して修正しました。
クラス Launch4JTask.java で、行を置き換えました

final Builder b = new Builder(Log.getAntLog());

これで

final Builder b = new Builder(Log.getAntLog(), new File(getOwningTarget().getProject().getProperty("launch4j.bindir")));

この変更により、そのような ant ビルド スクリプト内で Launch4j へのパスを指定できました。

<property name="launch4j.bindir" location="../tools/launch4j/" />

こんにちは、-クリス-

于 2013-05-27T10:51:59.887 に答える
2

私は同じ問題に直面しており、パス/クラスパスを適切に設定できませんでしたが、回避策として、launch4j ディレクトリ内に Ant ビルドを作成し、実行可能ファイルを生成して動作させることができました。

于 2013-01-15T14:58:54.823 に答える
0

Mavenでlaunch4jを構築する際にも同様の問題がありました:

...
[INFO] launch4j: (longPathIn.m2Repository)\windres.exe: can't popen `type  (longPathToTemp)\Temp\launch4j8580185391499327059rc': No error
[ERROR] 
net.sf.launch4j.BuilderException: net.sf.launch4j.ExecException: Exec failed(1): [Ljava.lang.String;@9f1fb5
at net.sf.launch4j.Builder.build(Builder.java:145)
...

システム変数 ComSpec をクリーニングした後、正常に動作し始めました。

was: ComSpec=%SystemRoot%\system32\cmd.exe;c:\Program Files (x86)\NSIS\NSIS.exe
now: ComSpec=%SystemRoot%\system32\cmd.exe

私ではなく、NSIS自体がそこに挿入されたようです。

于 2013-12-07T07:52:15.917 に答える