使用Java Web Start和apache.commons-logging进行格式错误的\ uxxxx编码

时间:2017-01-03 15:11:15

标签: java-web-start jnlp apache-commons-logging

我正在尝试将Java小程序迁移到Java Web Start。因此,我使用以下jnlp文件调用applet:

<?xml version="1.0"?>
<jnlp spec="1.0+" codebase="http://localhost:7001/codebase/">
    <information>
        <title>title</title>
        <vendor>vendor</vendor>
    </information>
    <resources>
        <java version="1.7"/>
        <jar href="myapplet.jar"/>
        <extension name="dependencies" href="Dependencies.jnlp"/>
    </resources>
    <applet-desc main-class="AppletMainClass" name="MyApplet"/>
</jnlp>

依赖项文件:

<?xml version="1.0"?>
<jnlp spec="1.0+" codebase="http://localhost:7001/codebase/">
    <information>
        <title>Dependencies</title>
        <vendor>vendor</vendor>
    </information>
    <resources>
        ...
        <jar href="commons-logging.jar"/>
        <jar href="log4j-1.2.11.jar"/>
    </resources>
    <component-desc/>
</jnlp>

启动applet时,将初始化apache-commons记录器:

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

public abstract class BaseApplet extends JApplet {
    private transient Log log = LogFactory.getLog(BaseApplet.class);
}

java.lang.IllegalArgumentException:格式错误的\ uxxxx编码失败。但是,在没有jnlp文件的情况下运行applet时,不会发生异常。

到目前为止,搜索网页只给了我一个建议,即属性文件中的某个字符可能会被错误地转义,但我的属性中找不到这样的内容。

commons-logging.properties:

org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLogger

log4j.properties:

log4j.rootLogger=INFO, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%c] %m%n

log4j.logger.httpclient.wire.header=DEBUG
log4j.logger.httpclient.wire.content=INFO
log4j.logger.org.apache.commons.httpclient=WARN

这个例外可能还有什么原因?

1 个答案:

答案 0 :(得分:0)

原来,jar内部的commons-logging.properties已损坏(但不在我的IDE中),导致编码异常错误。