更新 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;
}
}