Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java rmi注册表中远程对象的可能名称是什么?_Java_Rmi - Fatal编程技术网

java rmi注册表中远程对象的可能名称是什么?

java rmi注册表中远程对象的可能名称是什么?,java,rmi,Java,Rmi,java rmi注册表中远程对象的可能名称是什么?有禁止使用的字符吗 我尝试调用类命名的rebind方法来绑定rmi注册表中的对象,结果得到了MalformedUrlException。我知道问题在于对象的名称,因为当我使用像abc这样的名称时,它会起作用,所以您可能不需要堆栈跟踪来回答 问题是名称是伪随机生成的。例如,导致问题的名称之一是[B@f3d6a5。有没有办法使用您喜欢的任何名称?如果没有,允许使用什么名称 这很奇怪,因为api没有说明关于名称的任何规则,您可以看到它。可能是名称中出现

java rmi注册表中远程对象的可能名称是什么?有禁止使用的字符吗

我尝试调用类命名的rebind方法来绑定rmi注册表中的对象,结果得到了
MalformedUrlException
。我知道问题在于对象的名称,因为当我使用像
abc
这样的名称时,它会起作用,所以您可能不需要堆栈跟踪来回答

问题是名称是伪随机生成的。例如,导致问题的名称之一是
[B@f3d6a5
。有没有办法使用您喜欢的任何名称?如果没有,允许使用什么名称


这很奇怪,因为api没有说明关于名称的任何规则,您可以看到它。可能是名称中出现的一些字符,如
[
,必须使用
\
进行转义。可能不是关于java,而是关于url规范,如果有的话,在这种情况下,我可能不得不使用其他名称。

API当然没有说明任何限制,但是如果您得到
格式错误的异常
,我会尝试使用随机生成的名称.

该州:

名称-URL格式的名称(不带 (计划部分)

如果查看
命名
的源代码,您将看到它将传入的名称转换为
URI
,并在某些情况下抛出
畸形异常

private static ParsedNamingURL intParseURL(String str)
    throws MalformedURLException, URISyntaxException
{
    URI uri = new URI(str);
    if (uri.isOpaque()) {
        throw new MalformedURLException(
        "not a hierarchical URL: " + str);
    }
    if (uri.getFragment() != null) {
        throw new MalformedURLException(
        "invalid character, '#', in URL name: " + str);
    } else if (uri.getQuery() != null) {
        throw new MalformedURLException(
        "invalid character, '?', in URL name: " + str);
    } else if (uri.getUserInfo() != null) {
        throw new MalformedURLException(
        "invalid character, '@', in URL host: " + str);
    }
这意味着名称必须是有效的
URI
,并且不能包含
#
@


请亲自查看代码以了解更多详细信息。

我刚刚在堆栈跟踪中注意到非法字符确实是“[”。不过,如果您知道解决此问题的方法或其他方法,我希望看到一些答案。为什么要使用
toString()
结果为绑定名?客户端将如何发现生成的绑定名?谢谢!它起作用了,我通过检索列表检查了注册表中的名称,发现注册表中引用对象的名称是编码之前在开始时生成的伪随机名,因此ing解决了这个问题,但没有弄乱最终使用的名称。