Jar-File在控制台中运行,但在批处理文件执行时崩溃

时间:2015-04-16 09:28:40

标签: java eclipse batch-file jar

我的程序使用了大量内存,因为它必须读取巨大的.xls -Files。 所以我在Eclipse中添加了参数-Xms512,这对我很有用。 当我从命令行运行时,导出的jar文件的工作方式相同:

java -jar -Xms512 Excel_to_csv.jar

但是当我使用.bat文件运行它时,它会运行,但由于内存问题而崩溃:

java -jar -Xms512m Excel_to_csv.jar

我很感激任何想法。

2 个答案:

答案 0 :(得分:0)

我有个主意,但我不确定。要使用Xms参数,运行该命令的用户必须具有锁定内存中的页面的权限。通常,此权利授予您的用户帐户。当您在命令行中运行命令时,它在您的用户帐户下运行,一切正常。将命令打包到批处理文件并启动它时,它将在“SYSTEM”帐户下运行。现在该帐户可能没有此权限(不确定这一点)。要解决此问题,请执行以下操作:

  1. 在“开始”菜单上,单击“运行”。在“打开”框中,键入gpedit.msc。
  2. 在“本地组策略编辑器”控制台上,展开“计算机配置”,然后展开“Windows设置”。
  3. 展开“安全设置”,然后展开“本地策略”。
  4. 选择“用户权限分配”文件夹。策略将显示在详细信息窗格中
  5. 在窗格中,双击“锁定内存中的页面”。
  6. 在“本地安全设置 - 内存中的锁定页面”对话框中,单击“添加用户或组”。
  7. 在“选择用户,服务帐户或组”对话框中,添加帐户“SYSTEM”。
  8. 注销然后重新登录以使此更改生效。
  9. https://msdn.microsoft.com/en-us/library/ms190730.aspx

    获取(并修改)

答案 1 :(得分:0)

修正参数的顺序:-jar期望文件名作为参数,但是你给它-Xms。并说" MB"也许是一个好主意:

java -Xms512m -jar Excel_to_csv.jar

我不确定当你只说512时默认是什么,但我的猜测是KiB(意味着RAM的512 KiB),这甚至不足以启动这个过程。

也就是说,ms只是设置了Java获得的 start 内存量。如果处理复杂的Excel,则可能需要更多内存。试试

java -Xms512m -Xmx2000m -jar Excel_to_csv.jar

允许Java在必要时分配多达2000 MiB。