Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/371.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.net.URI_Java_Fedora Commons - Fatal编程技术网

将字符串转换为java.net.URI

将字符串转换为java.net.URI,java,fedora-commons,Java,Fedora Commons,首先,我很抱歉,我主要是一个Perl人员,在做一些Java。我读过一些文献,但无法得到这个来给我我需要的签名: logger.debug("Entered addRelationships"); boolean rval = true; for(int i=0;i<relationships.length;i++) { URI converted_uri ; try { converted_uri = ne

首先,我很抱歉,我主要是一个Perl人员,在做一些Java。我读过一些文献,但无法得到这个来给我我需要的签名:

    logger.debug("Entered addRelationships");
    boolean rval = true;
    for(int i=0;i<relationships.length;i++)
    {
        URI converted_uri ;
        try {
          converted_uri = new URI("relationships[i].datatype") ;
        } catch (URISyntaxException e) {
          logger.error("Error converting datatype", e);
          return rval = false ;
        }

        boolean r = addRelationship(context, relationships[i].subject,
                relationships[i].predicate, relationships[i].object,
                relationships[i].isLiteral, converted_uri);
        if(r==false)
        {
            rval = false;
        }
    }
    return rval;
}
由此产生的错误是:

org.fcrepo.server.management.DefaultManagement中的addRelationshiporg.fcrepo.server.Context、java.lang.String、java.lang.String、java.lang.String、boolean、java.lang.String不能应用于org.fcrepo.server.Context、java.lang.String、java.lang.String、boolean、java.net.URI


在我看来,转换后的uri是这个结尾的uri吗?数据类型在上一版本中是字符串,因此不需要体操

只需移除qoutes:

converted_uri = new URI(relationships[i].datatype) ;

当您使用引号时,就像在perl中一样,您正在处理字符串文字。若你们想引用变量,你们必须在代码中直接提到它

只需移除qoutes:

converted_uri = new URI(relationships[i].datatype) ;

当您使用引号时,就像在perl中一样,您正在处理字符串文字。若你们想引用变量,你们必须在代码中直接提到它

虽然@AlexR指出了代码中的另一个问题,但这并不是问题的原因

您有一个编译错误,URI语法中的错误只会在运行时出现,就像@AlexR识别的错误一样

您所遇到的问题是,您试图将URI作为最后一个参数传递,但方法addRelationship需要一个字符串作为最后一个参数。错误就是这么说的

错误的第一部分说明了方法的签名实际上是什么,正如您所看到的,它以java.lang.String结尾,而错误的第二部分说明了您试图提供给方法的数据类型,正如您所看到的,它以java.net.URI结尾

因此,URI似乎没有像您预期的那样更改;它还需要一根绳子

解决方案是将代码更改为:

boolean rval = true;
for(int i = 0; i < relationships.length; i++)
{
    boolean r = addRelationship(context, relationships[i].subject,
            relationships[i].predicate, relationships[i].object,
            relationships[i].isLiteral, relationships[i].datatype);
    if (!r)
    {
        rval = false;
    }
}
return rval;

虽然@AlexR指出了代码中的另一个问题,但这并不是您在问题中发现的问题的原因

您有一个编译错误,URI语法中的错误只会在运行时出现,就像@AlexR识别的错误一样

您所遇到的问题是,您试图将URI作为最后一个参数传递,但方法addRelationship需要一个字符串作为最后一个参数。错误就是这么说的

错误的第一部分说明了方法的签名实际上是什么,正如您所看到的,它以java.lang.String结尾,而错误的第二部分说明了您试图提供给方法的数据类型,正如您所看到的,它以java.net.URI结尾

因此,URI似乎没有像您预期的那样更改;它还需要一根绳子

解决方案是将代码更改为:

boolean rval = true;
for(int i = 0; i < relationships.length; i++)
{
    boolean r = addRelationship(context, relationships[i].subject,
            relationships[i].predicate, relationships[i].object,
            relationships[i].isLiteral, relationships[i].datatype);
    if (!r)
    {
        rval = false;
    }
}
return rval;

嗨,埃尔文,谢谢我的坏消息,我以错误的方式“读取”错误消息,认为:org.fcrepo.server.Context、java.lang.String、java.lang.String、java.lang.String、boolean、java.net.URI是方法签名而不是数据。有点不对劲,但我已经成功地使用String.valueOfrelationships[I].datatype进行了编译。然后我可以仔细看一看。嗨,埃尔文,谢谢我的坏消息,我是以错误的方式“读取”错误消息的,我想:org.fcrepo.server.Context、java.lang.String、java.lang.String、java.lang.String、boolean、java.net.URI是方法签名而不是数据。有点不对劲,但我已经成功地使用String.valueOfrelationships[I].datatype进行了编译。然后我可以仔细看看。谢谢你,我不确定它们是否以同样的方式工作。所有的编程语言都是一样的。。。嗯,除了结束语:谢谢你,我不确定它们是否以同样的方式工作。所有的编程语言都是一样的。。。那么,除了关闭,