0

更新 2: VMWare プレーヤーの Ubuntu 12.04 仮想マシンでこれをテストしたため、Ubuntu ワークステーションに問題がある可能性があります。

更新 1: Windows 7 でこれをテストし、インストールされたバージョンが動作するので、これをバグ レポートとして netbeans に送信しました。 http://netbeans.org/bugzilla/show_bug.cgi?id=217699

元の質問

Derbyが組み込まれた JPA を使用するNetBeans プラットフォーム アプリケーションは、NetBeans 7.2 IDE から起動すると機能しますが、Ubuntu 12.04 用の Linux インストーラを作成してインストールすると、インストールされたアプリケーションが derby ホーム ディレクトリにデータベースを作成しません。に設定しSystem.getProperty("user.home")ます。

基本的に、IDE では問題なく動作しますが、nb プラットフォームにデプロイされたバージョンを起動するときにエンティティ マネージャーを取得する際に問題が発生します。デフォルトで /usr/local/myapp になる sudo を使用してインストールを試みましたが、データベースのアクセス許可を一時的にインストール ディレクトリの 777 に変更しましたが、これは役に立ちませんでした。何が失敗したかを確認するためのログ ディレクトリがないようです。例外またはエラー メッセージが Netbeans プラットフォームによって食べられているのではないかと心配しています。

NetBeans プラットフォームまたは組み込みの derby 担当者が、この問題のトラブルシューティングに関するアドバイスを共有できることを願っています。

これは、私の netbeans プラットフォーム アプリのラップされた jar である私の persistance.xml です。

<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
  <persistence-unit name="VmCfgLibPU" transaction-type="RESOURCE_LOCAL">
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    <class>mycompany.jpa.Vmcfg</class>
    <properties>
      <property name="javax.persistence.jdbc.url" value="jdbc:derby:myDB;create=true"/>
      <property name="javax.persistence.jdbc.password" value="app"/>
      <property name="javax.persistence.jdbc.driver" value="org.apache.derby.jdbc.EmbeddedDriver"/>
      <property name="javax.persistence.jdbc.user" value="app"/>
      <property name="eclipselink.ddl-generation" value="create-tables"/>
    </properties>
  </persistence-unit>
</persistence>

これは、エンティティ マネージャーを取得するために使用した Utils クラスです。次の行em = emf.createEntityManager();は実行されず、例外はスローされません。

public class Util {

    static public EntityManager getEm() {
        return getEntityManager();
    }

    static public EntityManager em;

    static public EntityManager getEntityManager() {
        if (em == null || em.isOpen() == false) {
            try {
                File homeDir = new File(System.getProperty("user.home")+"/.simdriver");
                homeDir.mkdirs();
                Msg.info("home dir is: "+homeDir.getAbsolutePath());
                System.setProperty("derby.system.home", homeDir.getAbsolutePath());
                EntityManagerFactory emf 
                      = Persistence.createEntityManagerFactory("VmCfgLibPU");
                Msg.info("Check B2");
                System.out.println("Check B2");

                // .createEntityManager() does not execute when formally installed
                // works when running in IDE
                em = emf.createEntityManager();
                Msg.info("Check C2");
                System.out.println("Check C2");
            } catch (Exception e) {
                Exceptions.printStackTrace(e);
                Msg.err("Error while getting entity manager");
            }
        }
        return em;
    }
}
4

0 に答える 0