我们的应用程序正在生成一个巨大的 java 命令,因为我们提供的类路径中有 700 多个 jar 条目。结果是:
java": error=7, Argument list too long
at oracle.jbo.dt.jdevx.deployment.SdoDeployListener.deployed(SdoDeployListener.java:547)
at oracle.jdevimpl.deploy.hook.DeployerListenersHandler$HookDeployerListener.deployed(DeployerListenersHandler.java:418)
at oracle.jdevimpl.deploy.fwk.ListenerSupport.fireDeployed(ListenerSupport.java:215)
at oracle.jdeveloper.deploy.common.AbstractDeployer.deploy(AbstractDeployer.java:162)
at oracle.jdeveloper.deploy.common.AbstractStatefulDeployer.deploy(AbstractStatefulDeployer.java:130)
此 java 命令由 Jdeveloper 工具在内部生成,因此我们无法控制在类路径中提供的 jar。java 命令达到了 /usr/include/linux/limits.h 文件中设置的 131072 字符限制,因为该命令的长度为 135942。
/usr/include/linux/limits.h
#define ARG_MAX 131072 /* # bytes of args + environ for exec() */
如何设置 ARG_MAX 的上限?我无法在操作系统级别设置它,因为此构建可能在不同的机器上运行。