2013-01-14 6 views
3

내 프로젝트에 launch4j 구성이 있습니다. WindowsXP에서 개발 한 제품을 사용했습니다. 지금은뿐만 아니라 Mac에서 구축 할 필요 :Launch4j/windres : 경로를 올바르게 설정하는 방법은 무엇입니까?

내 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-실행에 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 

답변

2

동일한 문제가 발생했습니다. 경로/classpath를 제대로 설정하지 못했지만 해결 방법으로 launch4j 디렉토리에서 Ant 빌드를 작성하고 실행 파일을 생성하는 작업을 수행 할 수있었습니다.

+0

오늘도 동일하게 알아보십시오. 감사. –

+0

@ 레오 : "launch4j 디렉토리 내에서 앤트 빌드 만들기"가 무슨 뜻인지 설명해 주시겠습니까? 나는이 문제를 겪고 있으며 나는 손실에 처해있다. 나는 Netbeans 안에 건물을 짓고있다. – Clayton

+1

ant-buildfile을 launch4j-dir에 넣고 모든 경로를 변경하여이를 수정하십시오. –

4

이 오류는 현재 디렉토리가 launch4j 디렉토리가 아닌 경우에 발생합니다.

Launch4j는 launch4j.properties의 클래스 경로를보고 자체 설치 디렉토리를 찾으려고 시도합니다. 이것은 getYarBaseDir() 메소드 상단의 Util.java에서 수행됩니다.

URI uri = new URI(Util.class.getClassLoader() 
    .getResource(Launch4jProperties) 
    .getFile()); 

String path = uri.getPath(); 

if (path.startsWith("file:")) { 
    String jarPath = path.substring(5,path.lastIndexOf('!')); 

문제는 uri.getPath() "파일 :"반환하지 않습니다 : 그것은이 라인이 최근에 변경되었습니다 로컬 파일 URI에 대한 부분을 - 그것은 단지 URI로 시작의 경로 부분을 반환 /. 나는이에 그 마지막 두 줄을 변경, 그것은 일을 시작 :

if (path.startsWith("/")) { 
    String jarPath = path.substring(0, path.lastIndexOf('!')); 

주 5 -> 0 우리가 제거 할 필요가 없기 때문에 문자열에서 "파일"부분을 더 이상. build.xml.prod의 이름을 build.xml로 변경해야 launch4j를 컴파일 할 수 있지만 그 외에는 정상적으로 작동합니다.

2

또한이 문제가있어서 launch4j 코드를 수정하여 해결했습니다. 클래스 Launch4JTask.java에서
나는 내가 그

<property name="launch4j.bindir" location="../tools/launch4j/" /> 
처럼 내 개미 빌드 스크립트 내부 Launch4j의 경로를 지정할 수 이러한 변경을 통해이 일

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

와 라인

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

교체

인사말, -chris-

+1

니스. launch4j 개발자에게 제출 했습니까? –

0

나는 메이븐에 launch4j를 구축하여 비슷한 문제가 있었다 : 그것은 NSIS처럼 보인다

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

가 자신을 삽입 내가 아니라 :

... 
[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을 청소 한 후 정상적으로 작동하기 시작했다.경험하는 사람들을 위해

6

: 64 비트 리눅스에서 한데로을 실행할 때

error=2, No such file or directory 

문제를, 당신은 32 비트 라이브러리를 설치해야합니다. Linux Mint에서 다음과 함께 ia32-libs 패키지를 설치했습니다.

sudo apt-get install ia32-libs 
+1

Amazon EC2의 Centos 빌드 머신에서 이걸 사용하려면 다음을 수정해야합니다. yum install glibc-2.12-1.149.el6.i686 – SteveDonie

+0

쓸모없는 제품인 것처럼 보입니다. 우분투 16.04에서는 다음과 같이 작동한다고 제안했습니다. sudo apt-get lib32ncurses5 lib32z1을 설치하십시오. – javydreamercsw

관련 문제