首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Launch4j / windres:如何正确设置路径?

Launch4j / windres:如何正确设置路径?
EN

Stack Overflow用户
提问于 2013-01-14 21:30:25
回答 5查看 9.4K关注 0票数 4

我已经为我的项目配置了launch4j。当我在windowsXP上开发时,我重新使用了它,它在那里工作。现在我也需要它在mac上构建:

我的build.xml:

代码语言:javascript
复制
<?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>

我得到以下输出:

代码语言:javascript
复制
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

当我将bindir="tools/launch4j/bin"添加到启动4j-execution中时,找到ld和windres,并且输出变为:

代码语言:javascript
复制
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
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-01-15 22:58:55

我遇到了同样的问题,无法正确设置路径/类路径,但作为一种变通方法,我在launch4j目录中创建了Ant构建,并且能够让它生成可执行文件。

票数 2
EN

Stack Overflow用户

发布于 2014-05-13 10:52:30

对于那些经历过以下情况的人:

代码语言:javascript
复制
error=2, No such file or directory

问题在64位Linux上运行windres时,需要安装32位库。在Linux Mint上,我使用以下命令安装了ia32-libs包:

代码语言:javascript
复制
sudo apt-get install ia32-libs
票数 6
EN

Stack Overflow用户

发布于 2013-03-08 07:54:52

正如Leo所指出的,当您的当前目录不是launch4j目录时,会出现此错误。

Launch4j试图通过查找launch4j.properties的类路径来查找自己的安装目录。这是在getJarBaseDir()方法顶部的Util.java中完成的。最近将其更改为以下几行:

代码语言:javascript
复制
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的" file :“部分--它只返回以/开头的URI的路径部分。我把最后两行改成这样,它开始工作了:

代码语言:javascript
复制
if (path.startsWith("/")) {
  String jarPath = path.substring(0, path.lastIndexOf('!'));

注意substring中的5file 0,因为我们不再需要删除“->:”部分。为了编译launch4j,我不得不将build.xml.prod重命名为build.xml,但除此之外,它工作得很好。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14319358

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档