运行java bat文件时出错

时间:2013-07-04 19:31:40

标签: java utf-8 jvm

当我启动我的bat文件时:

@echo off
title x
:start
echo.
java -server -Dfile.encoding=UTF-8 -Xms64m -Xmx64m -Xbootclasspath/p:../libs/l2ft.jar -    cp config/xml;../libs/*; l2ft.loginserver.AuthServer
if ERRORLEVEL 2 goto restart
if ERRORLEVEL 1 goto error
goto end
:restart
echo Restarted ...
goto start
:error
echo Terminated abnormaly ...
:end
echo Terminated ...

我得到了一个奇怪的错误:

Error occurred during initialization of VM
java.nio.charset.UnsupportedCharsetException: UTF-8
    at java.nio.charset.Charset.forName(Unknown Source)
    at java.nio.charset.Charset.defaultCharset(Unknown Source)
    at sun.nio.cs.StreamEncoder.forOutputStreamWriter(Unknown Source)
    at java.io.OutputStreamWriter.<init>(Unknown Source)
    at java.io.PrintStream.<init>(Unknown Source)
    at java.io.PrintStream.<init>(Unknown Source)
    at java.lang.System.initializeSystemClass(Unknown Source)

我试图重新安装java jdk,我已经在bat文件中有默认编码:-Dfile.encoding = UTF-8,所以我不知道该问题的解决方案。

3 个答案:

答案 0 :(得分:1)

我找到了解决方案。在包含AuthServer的jar中,有很多UTF-8不支持的俄语字符。删除每个字符并重新编译后,问题就消失了。我朋友的Jar文件也包含这些字符,但它没有问题。我不知道如何,但现在这不重要,因为问题已经消失。

答案 1 :(得分:0)

看起来你的Java不支持UTF-8,这真的很奇怪,因为每个Java都应该根据documentation of the Charset class支持它。

尝试运行此代码以确保不支持UTF-8。

import java.nio.charset.Charset;

public class TestCharset {
    public static void main(String[] args) {
        System.out.println(Charset.forName("UTF-8"));
    }
}

如果不支持UTF-8,则应该抛出异常。

如果您使用不正确的连字符,也可以使用UTF8代替UTF-8进行尝试。 UTF-8根据规范是正确的,但UTF8也适用于我的机器。

答案 2 :(得分:0)

我不确定你的p:../ libs / l2ft.jar,这不是一条正确的道路。尝试用以下内容替换当前行:

java -server -Dfile.encoding=UTF-8 -Xms64m -Xmx64m -cp p:../libs/l2ft.jar;config/xml;../libs/* l2ft.loginserver.AuthServer

请务必将“p:../ libs / l2ft.jar”替换为l2ft.jar所在的正确路径。