无法找出为什么 jmxRemoteURL 包含非 ASCII 字符

ili*_*ian 0 java tomcat jmx intellij-idea non-ascii-characters

我正在尝试将 Tomcat (v: 9.0.12) 与 Intellij Idea (v: 2018.3) 结合使用来部署 Artifact(一个简单的 hello world javaEE Web 应用程序项目)。

这是我在构建和启动项目后的一些输出(我将把这些输出作为一些有用的信息。您也可以在我的问题末尾找到完整的输出):

“C:\Program Files\Apache Software Foundation\Tomcat 9.0\bin\catalina.bat”运行
[2019-09-07 10:58:59,049] 工件测试:战争爆炸:正在等待服务器连接以启动工件部署...
使用CATALINA_BASE:“C:\ Users \ pcs \ .IntelliJIdea2018.3 \ system \ tomcat \ Tomcat_9_0_12_test”
使用CATALINA_HOME:“C:\ Program Files \ Apache Software Foundation \ Tomcat 9.0”
使用CATALINA_TMPDIR:“C:\ Program Files \ Apache Software Foundation \ Tomcat 9.0 \ temp”
使用 JRE_HOME:“C:\Program Files\Java\jdk-10.0.1”
使用 CLASSPATH:“C:\Program Files\Apache Software Foundation\Tomcat 9.0\bin\bootstrap.jar;C:\Program Files\Apache Software Foundation\Tomcat 9.0\bin\tomcat-juli.jar”
错误:代理抛出异常:java.net.MalformedURLException:服务 URL 包含非 ASCII 字符 0x6f1

之后,我遇到了JMX错误,如果我是对的,它会发生在:“jdk.management.agent/sun.management.jmxremote.ConnectorBootstrap.startRemoteConnectorServer”(ConnectorBootstrap.java:491)。

我已将完整输出放在最后。

在问我的问题之前,请您先看看C:\Program Files\Java\jdk-10.0.1\lib\src.zip!\java.management\javax\management\remote\JMXServiceURL.java的某些部分 ,然后您会看到它确保 URL 中没有非 ASCII 字符,并且其中有我的答案的一部分:

public class JMXServiceURL implements Serializable {

    private static final long serialVersionUID = 8173364409860779292L;

    /**
     * Constructs a JMXServiceURL by parsing a Service URL
     * string.
     *
     * @param serviceURL the URL string to be parsed.
     *
     * @exception NullPointerException if  serviceURL is
     * null.
     *
     *  @exception MalformedURLException if serviceURL
     * does not conform to the syntax for an Abstract Service URL or
     * if it is not a valid name for a JMX Remote API service.  A
     * JMXServiceURL must begin with the string
     * "service:jmx:" (case-insensitive).  It must not
     * contain any characters that are not printable ASCII characters.
     */
    public JMXServiceURL(String serviceURL) throws MalformedURLException {
        final int serviceURLLength = serviceURL.length();

        /* Check that there are no non-ASCII characters in the URL,
           following RFC 2609.  */
        for (int i = 0; i < serviceURLLength; i++) {
            char c = serviceURL.charAt(i);
            if (c < 32 || c >= 127) {
                throw new MalformedURLException("Service URL contains " +
                                                "non-ASCII character 0x" +
                                                Integer.toHexString(c));
            }
        }
Run Code Online (Sandbox Code Playgroud)

您可以在评论中找到@exception MalformedURLException ,有趣的是我可以看到我的异常消息已准备好:)

我的问题是:如何找到包含非 ASCII 字符的 jmxRemoteURL 值?

这是我已经测试过的:

  • 我尝试将“127.0.0.1 localhost 主机名”添加到主机文件的末尾,但这没有用,而且我看不到我的问题与该问题之间的任何关系。

  • 我尝试以管理员身份运行 Intellij Idea,但也不起作用。

*最后这是我在 Intellij Idea Console 中的完整输出:

"C:\Program Files\Apache Software Foundation\Tomcat 9.0\bin\catalina.bat" run
[2019-09-07 10:58:59,049] Artifact test:war exploded: Waiting for server connection to start artifact deployment...
Using CATALINA_BASE:   "C:\Users\pcs\.IntelliJIdea2018.3\system\tomcat\Tomcat_9_0_12_test"
Using CATALINA_HOME:   "C:\Program Files\Apache Software Foundation\Tomcat 9.0"
Using CATALINA_TMPDIR: "C:\Program Files\Apache Software Foundation\Tomcat 9.0\temp"
Using JRE_HOME:        "C:\Program Files\Java\jdk-10.0.1"
Using CLASSPATH:       "C:\Program Files\Apache Software Foundation\Tomcat 9.0\bin\bootstrap.jar;C:\Program Files\Apache Software Foundation\Tomcat 9.0\bin\tomcat-juli.jar"
Error: Exception thrown by the agent : java.net.MalformedURLException: Service URL contains non-ASCII character 0x6f1

如果我漏掉了一些话,请告诉我。非常感谢您的大力帮助。

AHH*_*HHP 5

通过将 Windows区域格式从波斯语更改为英语,它为我修复了。