Java Winrun4j:超出了最大类路径大小

Java Winrun4j:超出了最大类路径大小,java,winrun4j,Java,Winrun4j,我的项目有很多依赖项,我告诉winrun4j通过设置 classpath.1=D:\lib\*.jar 在ini文件中 服务日志告诉我winrun4j正在扩展类路径并生成类路径: [info] Expanding Classpath: D:\lib\*.jar [info] Expanding Classpath: D:\lib\activation-1.1.1.jar [info] Expanding Classpath: D:\lib\activemq-client-5.10.2.jar

我的项目有很多依赖项,我告诉winrun4j通过设置

classpath.1=D:\lib\*.jar
在ini文件中

服务日志告诉我winrun4j正在扩展类路径并生成类路径:

[info] Expanding Classpath: D:\lib\*.jar
[info] Expanding Classpath: D:\lib\activation-1.1.1.jar
[info] Expanding Classpath: D:\lib\activemq-client-5.10.2.jar
[...]
[...]many, many other libs here
[...]
[warn] Exceeded maximum classpath size
[info] Generated Classpath: D:\lib\activation-.1.1.jar;D:\lib\activemq-client-5.10.2.jar;[...]
为什么winrun4j会生成这样的类路径?光吃一点就够了吗

D:\lib\*.jar
?


有什么办法可以让服务在这么多依赖项的情况下运行吗?

这是winrun4j问题,很久以前就知道了,这里没有解决和讨论:

超过最大类路径长度#59

在这里:

添加INI选项以禁用类路径全局扩展#67

不幸的是,你没有太多的可能性。正如问题59所建议的,您可以将工作目录设置为模块目录。你可以留下一些字符

D:\lib\activation-.1.1.jar
将变成
lib\activation-.1.1.jar。
您还可以检查是否需要所有依赖项


如果这还不够,您应该认真寻找替代方案,如JSmooth或Launch4J。

这是winrun4j特有的问题,正如您在winrun4j代码中看到的,此消息是硬编码的

从代码中,我无法计算出
max
的确切值,但在代码库中有一些单元测试将其设置为260

我想,这是从
MAX\u PATH
进入画面的地方


正如另一个答案所指出的,这个问题并没有得到解决,因为limit是硬编码的。

您可以构建一个胖JAR,在一个JAR文件中包含所有依赖库,而不是将所有依赖项放入libs文件夹并添加到类路径


如何实现这一点在很大程度上取决于您使用的构建系统(例如gradle或maven)。或者您可以看看spring boot,它默认使用胖jar。

java命令本身应该允许在类路径中使用“*”通配符。所以这可能是winrun4j本身的问题。您是否检查过该工具是否有一些论坛/错误跟踪程序可供查看?谢谢,但日志消息仅在生成的类路径长度远远超过260个字符时才会出现。记录生成的类路径在3996个字符后被剪切。这是我不确定的值。我在他们的代码库中找不到这个值,似乎来自一些头文件。这显然是答案,谢谢你的建议。
// Check for too many results
    if(*current >= max) {
        if(!g_classpathMaxWarned) {
            Log::Warning("Exceeded maximum classpath size");
            g_classpathMaxWarned = true;
        }
        return;
}