powershell java无效的线程堆栈大小错误

时间:2015-09-29 23:55:44

标签: java powershell stack

我的任务是将一些Windows脚本转换为PowerShell版本。除了一些小问题外,转换进展顺利。首要问题涉及我们用于查询数据库并生成XML或HTML文件的Java调用。当我从Windows脚本运行它时没问题:

java -Xss1m -cp ../lib/ ;../lib/jtds-1.3.1.jar;../lib/ojdbc6.jar DBDownloader TMPDBNAME ../sql/MTD_MTTR_Detail_v7 .sql ../out/drilldown/%fileName1%>> .. \ logs \ mtd.log 2>& 1

但是当我从PowerShell脚本运行时,我收到此错误:

LASTEXITCODE:1错误:无法创建Java虚拟机。错误:发生了致命异常。程序将会退出。 无效的线程堆栈大小:-Xss1m -cp

使用&呼叫运营商。我为所有要使用的脚本编写了一个库函数,并进行类似以下的调用:

* $ output = [string](& $ jvApp $ jvArg1 $ jvArg2 $ jvArg3 $ dbArg $ sqlArg $ lastArg >> $ logArg 2>& 1)

此次通话的参数如下:

sqlName:MTD_MTTR_Detail_v7

jvArg1:-Xss1m -cp

jvArg2:../ lib /; ./lib/jtds-1.3.1.jar ;../lib/ojdbc6.jar

jvArg3:DBDownloader

dbArg:TMPDBNAME

sqlArg:.. \ sql \ MTD_MTTR_Detail_v7.sql

lastArg:.. \ out \ drilldown \ MTD_MTTR_Detail.xml

logArg:.. \ logs \ mtd.log

我还设置了这些环境变量:

env:路径:C:\ Program Files \ Java \ jre8 \ bin; ...

env:JAVA_HOME:C:\ Program Files \ Java \ jre8 \;

env:CLASSPATH:C:\ Program Files \ Java \ jre8 \ lib;

奇怪的是,如果我取出堆栈大小参数,调用将起作用并产生XML或HTML文件。我还尝试了几个较小的堆栈大小设置,低至128k而没有运气。

虽然现在呼叫没有设置,但我担心它将来可能会失败。我相信他们认为这是因为复杂的SQL语句使用了他们查询和处理的大量数据。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

解决:当我将jvArg1中的两个args拆分为两个不同的变量时,Java调用没有堆栈大小错误。我猜Java正在读第一个arg作为一个大字符串,其间的空间并不重要。它必须认为-cp是堆栈大小参数的一部分。