我的项目有很多依赖项,我告诉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
有关使用多个依赖项运行服务的变通方法的任何想法吗?
答案 0 :(得分:3)
很长一段时间都是winrun4j问题,这里没有解决和讨论:
超过最大类路径长度#59
https://github.com/poidasmith/winrun4j/issues/59
在这里:
添加INI选项以禁用classpath glob expansion#67
https://github.com/poidasmith/winrun4j/issues/67
不幸的是,你的可能性不大。如问题59所示,您可以将工作目录设置为模块目录。你可以节省一些角色。
@NgModule({
imports: [ BrowserModule,
TestRoutingModule,
MyRoutingModule,
RouterModule.forRoot(
[
{ path: '', component: MainComponent }
], { useHash: false })
],
declarations: [ App, MainComponent, HomeComponent, TestComponent ],
bootstrap: [ App ]
})
export class AppModule {}
将成为D:\lib\activation-.1.1.jar;
。
您还可以检查是否需要所有依赖项。
如果还不够,你应该认真寻找替代方案,例如JSmooth或Launch4J。
答案 1 :(得分:1)
这是winrun4j的具体问题,因为您可以在winrun4j代码中看到此消息是硬编码的,Classpath.cpp Github
// Check for too many results
if(*current >= max) {
if(!g_classpathMaxWarned) {
Log::Warning("Exceeded maximum classpath size");
g_classpathMaxWarned = true;
}
return;
}
从代码中,我无法确定max
的确切值,但代码库中有单元测试将其设置为260.
我认为,MAX_PATH
来自$('button').click(function(){
$('.content').append('<div class="Box"></div>')
$('.numberPage').append('<span>'+($('.numberPage span').length + 1 )+'</span>')
});
。
正如另一个答案所指出的那样,问题没有解决,因为限制是硬编码的。
答案 2 :(得分:1)
不是将所有依赖项放入libs文件夹并将它们添加到类路径中,而是可以在单个JAR文件中构建包含所有依赖库的fat-JAR。
如何实现这一点取决于您使用的构建系统(例如gradle或maven)。或者你可以看一下spring-boot,它默认使用fat-JARs。