1

最初にお詫び申し上げます。私は主に 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;
}

結果のエラーは次のとおりです。

addRelationship(org.fcrepo.server.Context,java.lang.String,java.lang.String,java.lang.String,boolean,java.lang.String) in org.fcrepo.server.management.DefaultManagement cannot be applied to (org.fcrepo.server.Context,java.lang.String,java.lang.String,java.lang.String,boolean,java.net.URI)

convert_uriはこれの最後にある URI のように思えますか? 以前のリリースでは datatype は文字列だったので、体操は必要ありませんでした。

4

2 に答える 2

3

引用符を削除するだけです:

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

引用符を使用しているときは、perl とまったく同じように、文字列リテラルを扱っています。変数を参照したい場合は、コードで直接言及する必要があります。

于 2015-01-26T14:23:01.773 に答える
1

@AlexR はコード内の別の問題を指摘しましたが、それは質問で特定した問題の原因ではありません。

コンパイル エラーがあり、URI の構文のエラーは、@AlexR が識別したような実行時にのみ表示されます。

あなたが抱えている問題はURI、最後の引数として a を渡そうとしていますが、メソッドaddRelationshipは a を最後の引数として期待しStringていることです。それがエラーの内容です。

(エラーの最初の部分は、メソッドのシグネチャが実際に何であるかを示しています。これは、 で終わっていることがわかりますjava.lang.String。エラーの 2 番目の部分は、メソッドに与えようとしているデータのタイプを示しています。で終わるもの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;
于 2015-01-26T14:27:36.370 に答える