找不到为什么 jmxRemoteURL 包含非 ASCII 字符
Can not find out WHY jmxRemoteURL contains non-ASCII character
我正在尝试将 Tomcat (v: 9.0.12) 与 Intellij Idea (v: 2018.3) 一起使用来部署工件(一个简单的 hello world javaEE Web 应用程序项目)。
这是我在构建和启动项目后的一些输出(我将把这些输出作为一些有用的信息。你也可以在我的问题末尾找到完整的输出):
"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
在那之后我有一个关于 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));
}
}
你可以在评论中找到@exception MalformedURLException和有趣的部分 是我可以看到我的异常消息正在为我准备好:)
我的问题是:如何找到包含非 ASCII 字符的 jmxRemoteURL 值?
这是我已经测试过的:
我尝试将“127.0.0.1 localhost 主机名”添加到主机文件的末尾,但没有用,而且我看不出我的问题与那个问题之间有任何关系。
我试过 运行 Intellij Idea 作为管理员,但也没有用。
*最后这是我在 Intellij Idea 控制台中的完整输出:
"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
jdk.internal.agent.AgentConfigurationError: java.net.MalformedURLException: Service URL contains non-ASCII character 0x6f1
at jdk.management.agent/sun.management.jmxremote.ConnectorBootstrap.startRemoteConnectorServer(ConnectorBootstrap.java:491)
at jdk.management.agent/jdk.internal.agent.Agent.startAgent(Agent.java:450)
at jdk.management.agent/jdk.internal.agent.Agent.startAgent(Agent.java:621)
Caused by: java.net.MalformedURLException: Service URL contains non-ASCII character 0x6f1
at java.management/javax.management.remote.JMXServiceURL.<init>(JMXServiceURL.java:157)
at jdk.management.agent/sun.management.jmxremote.ConnectorBootstrap.exportMBeanServer(ConnectorBootstrap.java:846)
at jdk.management.agent/sun.management.jmxremote.ConnectorBootstrap.startRemoteConnectorServer(ConnectorBootstrap.java:479)
... 2 more
Disconnected from server
如果我有什么想说的,请告诉我。
非常感谢您的大力帮助。
通过稍微深入了解并进行一些研究,我通过转换意识到 ( 0x6f1 ) 等于 ( 1777 )
十六进制转十进制在线。似乎有一个非 ASCII 字符,它的( char 到 int )转换结果是 1777.
最后通过转换( int 到 char )我意识到 char 实际上是一个非 ASCII :)
(如CrazyCoder found out) it was EXTENDED ARABIC-INDIC DIGIT ONE
我的 解决方案: 我从我的 windows OS 删除了 波斯语(标准) 语言:控制Panel\All控制面板Items\Language
- 这是 ( int to char ) java 谁想知道的代码:
int a = 1777;
char c = (char)a;
System.out.println (c);
通过将 Windows 区域格式 从波斯语更改为英语,它为我修复了。
我正在尝试将 Tomcat (v: 9.0.12) 与 Intellij Idea (v: 2018.3) 一起使用来部署工件(一个简单的 hello world javaEE Web 应用程序项目)。
这是我在构建和启动项目后的一些输出(我将把这些输出作为一些有用的信息。你也可以在我的问题末尾找到完整的输出):
"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
在那之后我有一个关于 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));
}
}
你可以在评论中找到@exception MalformedURLException和有趣的部分 是我可以看到我的异常消息正在为我准备好:)
我的问题是:如何找到包含非 ASCII 字符的 jmxRemoteURL 值?
这是我已经测试过的:
我尝试将“127.0.0.1 localhost 主机名”添加到主机文件的末尾,但没有用,而且我看不出我的问题与那个问题之间有任何关系。
我试过 运行 Intellij Idea 作为管理员,但也没有用。
*最后这是我在 Intellij Idea 控制台中的完整输出:
"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
jdk.internal.agent.AgentConfigurationError: java.net.MalformedURLException: Service URL contains non-ASCII character 0x6f1
at jdk.management.agent/sun.management.jmxremote.ConnectorBootstrap.startRemoteConnectorServer(ConnectorBootstrap.java:491)
at jdk.management.agent/jdk.internal.agent.Agent.startAgent(Agent.java:450)
at jdk.management.agent/jdk.internal.agent.Agent.startAgent(Agent.java:621)
Caused by: java.net.MalformedURLException: Service URL contains non-ASCII character 0x6f1
at java.management/javax.management.remote.JMXServiceURL.<init>(JMXServiceURL.java:157)
at jdk.management.agent/sun.management.jmxremote.ConnectorBootstrap.exportMBeanServer(ConnectorBootstrap.java:846)
at jdk.management.agent/sun.management.jmxremote.ConnectorBootstrap.startRemoteConnectorServer(ConnectorBootstrap.java:479)
... 2 more
Disconnected from server
如果我有什么想说的,请告诉我。 非常感谢您的大力帮助。
通过稍微深入了解并进行一些研究,我通过转换意识到 ( 0x6f1 ) 等于 ( 1777 ) 十六进制转十进制在线。似乎有一个非 ASCII 字符,它的( char 到 int )转换结果是 1777.
最后通过转换( int 到 char )我意识到 char 实际上是一个非 ASCII :)
(如CrazyCoder found out) it was EXTENDED ARABIC-INDIC DIGIT ONE
我的 解决方案: 我从我的 windows OS 删除了 波斯语(标准) 语言:控制Panel\All控制面板Items\Language
- 这是 ( int to char ) java 谁想知道的代码:
int a = 1777;
char c = (char)a;
System.out.println (c);
通过将 Windows 区域格式 从波斯语更改为英语,它为我修复了。