1

Hyperjaxb3 ライブラリが私のプロジェクトに非常に役立つことを理解しており、複数のサイトでいくつかの説明を読み、Spring-Hibernate プロジェクトに組み込むことにしました。

https://jaxb.java.net/でHyperjaxb3 への参照を見つけました。これはかなり公式に見えますが、ハイパーリンク ( http://confluence.highsource.org/display/HJ3/Home ) が開きません。

古い POM の例をいくつか見つけてプロジェクトに含め、古いバージョンの参照のいくつかを見つけて削除しようとしましたが、現在、古い Hibernate バージョンへの依存関係にぶつかっているようです。エラーは次のようになりますこれ:

java.util.ServiceConfigurationError: com.sun.tools.xjc.Plugin: プロバイダー org.jvnet.hyperjaxb3.hibernate.plugin.HibernatePlugin をインスタンス化できませんでした: java.lang.NoClassDefFoundError: org/hibernate/type/MutableType

もっと良い Maven エントリがあるかどうか、プロジェクトが生きているかどうか、そして最新の Hibernate でどのように使用するかを考えています。

これは、Hyperjaxb3 に関する私の pom の抜粋です。ここでは、一部の古いリンクを除外し、他の依存関係の最新バージョンを指定しています。

    <dependency>
        <groupId>org.glassfish.jaxb</groupId>
        <artifactId>jaxb-core</artifactId>
        <version>${jaxb-version}</version>
    </dependency>        
    <dependency>
        <groupId>org.glassfish.jaxb</groupId>
        <artifactId>jaxb-xjc</artifactId>
        <version>${jaxb-version}</version>
    </dependency>  
    <!--<dependency>
        <groupId>org.jvnet.hyperjaxb3</groupId>
        <artifactId>hyperjaxb3</artifactId>
        <version>0.6.1</version>
    </dependency>        -->
    <dependency>
        <groupId>org.jvnet.hyperjaxb3</groupId>
        <artifactId>hyperjaxb3-hibernate-plugin</artifactId>
        <version>0.1</version>
        <exclusions>
            <exclusion>
                <groupId>hsqldb</groupId>
                <artifactId>hsqldb</artifactId>
            </exclusion>
            <exclusion>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
            </exclusion>
            <exclusion>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
            </exclusion>
            <exclusion>
                <groupId>net.sf.saxon</groupId>
                <artifactId>saxon</artifactId>
            </exclusion>
            <exclusion>
                <groupId>net.sf.saxon</groupId>
                <artifactId>saxon-dom</artifactId>
            </exclusion>
            <exclusion>
                <groupId>org.hibernate</groupId>
                <artifactId>hibernate</artifactId>
            </exclusion>
            <exclusion>
                <groupId>org.springframework</groupId>
                <artifactId>spring</artifactId>
            </exclusion>
            <exclusion>
                <groupId>com.sun.xml.bind</groupId>
                <artifactId>jaxb-xjc</artifactId>
            </exclusion>
        </exclusions>
    </dependency>  
    <dependency>
        <groupId>asm</groupId>
        <artifactId>asm</artifactId>
        <version>3.3.1</version>
    </dependency>
    <dependency>
        <groupId>asm</groupId>
        <artifactId>asm-attrs</artifactId>
        <version>2.2.3</version>
    </dependency>
    <dependency>
        <groupId>cglib</groupId>
        <artifactId>cglib</artifactId>
        <version>3.2.1</version>
    </dependency>

    <dependency>
        <groupId>commons-beanutils</groupId>   
        <artifactId>commons-beanutils</artifactId>
        <version>1.9.2</version>
    </dependency>
    <dependency>
        <groupId>commons-lang</groupId>   
        <artifactId>commons-lang</artifactId>
        <version>2.6</version>
    </dependency>
    <dependency>
        <groupId>commons-logging</groupId>   
        <artifactId>commons-logging</artifactId>
        <version>1.2</version>
    </dependency>

私は現在、注釈付きの Hibernate エンティティ クラスを生成しようとはしていませんが、PurchaseOdrer の例から POJO を生成しようとしています。これは私が現在行っていることです:

public void initializeModel(String name, InputStream src, String dir) throws IOException, URISyntaxException{
    dir = Paths.get(new URL(dir).toURI()).toString();
    File directory = new File(dir);
    directory.mkdirs();

    SchemaCompiler sc = XJC.createSchemaCompiler();
    sc.setDefaultPackageName(this.getClass().getPackage().getName() + ".generated");

    InputSource is = new InputSource(src);
    is.setSystemId(name);

    sc.parseSchema(is);
    S2JJAXBModel model = sc.bind();
    JCodeModel codeModel = model.generateCode(null, null);

    CodeWriter cw = new FileCodeWriter(directory);        
    codeModel.build(cw);
}
4

1 に答える 1

5

免責事項:私は Hyperjaxb3 の作成者です。

プロジェクトは GitHub でホストされています。

最新バージョン0.6.1は機能しており、正常に動作します。

しかし、私はそれを積極的に開発することはもうありません。

現在のバージョンの休止状態で動作しますか?

バージョン 0.6.1 の動作は、Hibernate 4.1.7 でテスト済みです。HJ3 は、標準の JPA アノテーション付きクラスを生成する単なるコード ジェネレーターです。そのため、最新バージョンの Hibernate で動作する可能性はかなり高いです。

Maven から 0.6.1 jar を取得できません。Mavenリポジトリから削除されたようです。

本当に?まだあります。

http://repo1.maven.org/maven2/org/jvnet/hyperjaxb3/hyperjaxb3-ejb-plugin/0.6.1/

2011 年から「hyperjaxb3-hibernate-plugin」0.1 が必要かどうかわかりません。

あなたは間違いなくしません。

または、フォークまたはアナログを認識していますか?

残念ながら、何も近づきません。

于 2016-03-14T13:49:40.490 に答える