Jar-File 在控制台中运行,但在批处理文件中执行时崩溃
Jar-File runs in console, but crahes when executed by batch-file
我的程序使用了大量内存,因为它必须读取巨大的 .xls 文件。
所以我在 Eclipse 中添加了参数 -Xms512,这对我来说效果很好。
当我从命令行 运行 导出的 jar 文件时,它的工作方式相同:
java -jar -Xms512 Excel_to_csv.jar
但是当我 运行 使用 .bat 文件时 运行s,但由于内存问题而崩溃:
java -jar -Xms512m Excel_to_csv.jar
我很感激任何想法。
我有一个想法,但我不确定。要使用 Xms
参数,运行 用户必须有权 锁定内存中的页面 。通常此权利授予您的用户帐户。当您在命令行中运行该命令时,它位于您的用户帐户下 运行 并且一切正常。当你将命令打包成批处理文件启动时,是"SYSTEM"账号下的运行。现在有可能是这个账号没有这个权限(这点不确定)。要解决此问题,请执行以下操作:
- 在“开始”菜单上,单击 运行。在“打开”框中,键入 gpedit.msc.
- 在本地组策略编辑器控制台上,展开“计算机配置”,然后展开“Windows 设置”。
- 展开安全设置,然后展开本地策略。
- Select 用户权限分配文件夹。策略将显示在详细信息窗格中
- 在窗格中,双击“锁定内存中的页面”。
- 在“本地安全设置 - 在内存中锁定页面”对话框中,单击“添加用户或组”。
- 在 Select 用户、服务帐户或组对话框中,添加帐户 "SYSTEM"。
- 注销然后重新登录以使此更改生效。
取自(并修改)自https://msdn.microsoft.com/en-us/library/ms190730.aspx
修正参数的顺序:-jar
期望文件名作为参数,但你给了它 -Xms
。并且说 "MB" 可能也是一个好主意:
java -Xms512m -jar Excel_to_csv.jar
当你说 512
时,我不确定默认值是多少,但我的猜测是 KiB(意思是 512 KiB 的 RAM),这甚至不足以启动该过程。
也就是说,ms
只是设置 start 内存量 Java 获取。如果你处理一个复杂的Excel,你可能需要更多的内存。试试
java -Xms512m -Xmx2000m -jar Excel_to_csv.jar
允许 Java 在必要时分配多达 2000 MiB。
我的程序使用了大量内存,因为它必须读取巨大的 .xls 文件。 所以我在 Eclipse 中添加了参数 -Xms512,这对我来说效果很好。 当我从命令行 运行 导出的 jar 文件时,它的工作方式相同:
java -jar -Xms512 Excel_to_csv.jar
但是当我 运行 使用 .bat 文件时 运行s,但由于内存问题而崩溃:
java -jar -Xms512m Excel_to_csv.jar
我很感激任何想法。
我有一个想法,但我不确定。要使用 Xms
参数,运行 用户必须有权 锁定内存中的页面 。通常此权利授予您的用户帐户。当您在命令行中运行该命令时,它位于您的用户帐户下 运行 并且一切正常。当你将命令打包成批处理文件启动时,是"SYSTEM"账号下的运行。现在有可能是这个账号没有这个权限(这点不确定)。要解决此问题,请执行以下操作:
- 在“开始”菜单上,单击 运行。在“打开”框中,键入 gpedit.msc.
- 在本地组策略编辑器控制台上,展开“计算机配置”,然后展开“Windows 设置”。
- 展开安全设置,然后展开本地策略。
- Select 用户权限分配文件夹。策略将显示在详细信息窗格中
- 在窗格中,双击“锁定内存中的页面”。
- 在“本地安全设置 - 在内存中锁定页面”对话框中,单击“添加用户或组”。
- 在 Select 用户、服务帐户或组对话框中,添加帐户 "SYSTEM"。
- 注销然后重新登录以使此更改生效。
取自(并修改)自https://msdn.microsoft.com/en-us/library/ms190730.aspx
修正参数的顺序:-jar
期望文件名作为参数,但你给了它 -Xms
。并且说 "MB" 可能也是一个好主意:
java -Xms512m -jar Excel_to_csv.jar
当你说 512
时,我不确定默认值是多少,但我的猜测是 KiB(意思是 512 KiB 的 RAM),这甚至不足以启动该过程。
也就是说,ms
只是设置 start 内存量 Java 获取。如果你处理一个复杂的Excel,你可能需要更多的内存。试试
java -Xms512m -Xmx2000m -jar Excel_to_csv.jar
允许 Java 在必要时分配多达 2000 MiB。