Takunojiのプログラミング・プレイグラウンド(遊び場)

Javaプログラミングを基本にして、ゲーム作成に必要なことの調査結果、やったら面白そうなことなどを記載します。プログラミングのススメ的なことも記載します。プログラミングで楽しく遊ぶために色々と記載して行きます。

NetBeansのセットアップ方法

最近、NetBeansEclipseよりわかりやすいという話を聞いた。。。

ならば、試してみようとなりました(笑)

 

ここのサイトを参考にセットアップ

NetBeans NetBeans 日本語サイト

 

まずは、ダウンロード → 

https://netbeans.org/downloads/?pagelang=ja

インストーラを起動(基本的にそのまま「次へ」)

なぜかJDKは32ビットだったが、まぁ良し。

Glassfish(4.1.1)もセットでインストール...特に入力もなく終了

初期画面はこんな感じ

f:id:Takunoji:20160318214635p:plain

まずはMavenを使用できるようにしたい。。。

[ツール]-[オプション]から下記を開く

f:id:Takunoji:20160318215704p:plain

ダウンロードしてきたMavenを「参照」から指定する。

apache-maven-3.3.3」を指定する。

f:id:Takunoji:20160318220440p:plain

プロジェクトの作成は赤枠をクリック

f:id:Takunoji:20160318214951p:plain

f:id:Takunoji:20160318221508p:plain

f:id:Takunoji:20160318221803p:plain

f:id:Takunoji:20160318221843p:plain

プロジェクトが作成できたらサーバータブから起動

f:id:Takunoji:20160318223855p:plain

ソースはこんな感じ

f:id:Takunoji:20160318224016p:plain

アンドロイドアプリの開発も行けるらしい。

 

関連ページ

Eclipse セットアップ

  1. Java Install Eclipse〜開発ツールのインストール〜
  2. TensorFlow C++環境〜EclipseCDTをインストール〜
  3. Setup OpenGL with JavaJOGLを使う準備 for Eclipse
  4. Eclipse Meven 開発手順〜プロジェクトの作成〜
  5. Java OpenCV 環境セットアップ(on Mac)
  6. Eclipse SceneBuilderを追加する
  7. JavaFX SceneBuilder EclipseSceneBuilder連携~

Java Basic

  1. Java Basic Level 1 〜Hello Java〜
  2. Java Basic Level2 〜Arithmetic Calculate〜
  3. Java Basic Level3 〜About String class〜
  4. Java Basic Level 4〜Boolean〜
  5. Java Basic Level 5〜If Statement〜
  6. Java Basic Summary from Level1 to 5
  7. Java Basic Level 6 〜Traning of If statement〜
  8. Java Basic Level8 〜How to use for statement〜
  9. Java Basic Level 8.5 〜Array〜
  10. Java Basic Level 8.5 〜Array〜
  11. Java Basic Level 10 〜While statement 〜
  12. Java Basic Swing〜オブジェクト指向〜
  13. Java Basic Swing Level 2〜オブジェクト指向2〜
  14. サンプル実装〜コンソールゲーム〜
  15. Java Basic インターフェース・抽象クラスの作り方
  16. Java Basic クラスとは〜Step2_1〜

 

outputStyleSheetが効かない

<body>タグ内には

    <h:outputStylesheet library="css" name="head.css"/>

 

f:id:Takunoji:20160314212050p:plain

と記載しているが出力されたソースには"RES_NOT_FOUND"が出力されている

いろいろ試し、たどり着いたのがこのサイト、テンプレートファイルに記載するときに

注意が必要に成る。下記のようにfacetを記載すると解決した。

<f:facet name="last">

      <h:outpuStyleSheet library="css" name="head.css"/>

</f:face>

stackoverflow.com

 

関連ページ一覧

  1. Tomcatサーバーをセットアップする(Eclipse)
  2. Java Basic Swing〜オブジェクト指向〜
  3. Java Basic Swing Level 2〜オブジェクト指向2〜
  4. サンプル実装〜コンソールゲーム〜
  5. Java Basic インターフェース・抽象クラスの作り方
  6. Java Basic クラスとは〜Step2_1〜
  7. Java Basic JUnit 〜テストスイートの作り方〜

 

 

JSF1027: [null] JSF の ELResolver が JSP コンテナに登録されていません。

タイトルのエラー文言が原因だと思い込み、ELResolver関連の調査をしていたが

よく考えてみたら存在しないクラスをEL式で使用していました。

 

#{xxxx.getNum}... このクラスは使用していないので、削除したのでデプロイ時に参照されません、つまりビルドエラーでデプロイに失敗していました。。。。

persistent.xmlの書き方とテスト時の注意点

persistence.xml記述について

persistence.xmlの詳細

トランザクションタイプの指定について

persistence.xmlの詳細

 

JUnitと実際に起動するアプリケーションでpersistent.xmlを二つ用意する

・実際にソースでEntityManagerFactoryを作成するなどの方法

Eclipse Community Forums: EclipseLink » EclipseLink + RCP + OSGI Service: No Persistence provider for EntityManager

 

JUnit Testing with JPA

JUnitJPAでのテストを実行する

1.testgフォルダを切る

2.persistence.xmlにプロパティをしていしてDBへの接続情報を設定する

        <properties>

            <property name="javax.persistence.jdbc.driver" value="org.postgresql.Driver"/>

            <property name="javax.persistence.jdbc.url" value="jdbc:postgresql://localhost:5432/postgres"/>

            <property name="javax.persistence.jdbc.user" value="DBのユーザー"/>

            <property name="javax.persistence.jdbc.password" value="パスワード"/>

            <property name="eclipselink.ddl-generation" value="none"/>

<!-- ここの部分でテーブルの自動Create, Dropなどを設定する -->

<property name="eclipselink.id-validation" value="NONE"/>

        </properties>

 

出力されたエラー

Internal Exception: javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file:  java.naming.factory.initial

だが、解決方法がわからない。調査したが「appserv-rt.jar」を追加してやれば

プロパティを読み込んでくれるらしいのだが.........

予想、

1.persistence-unitの名前がテストでない方のxmlと被ってプロパティが読めない…

→関係なかった......

色々と調べたが、SystemPropertyを取得したり、設定を行う必要があるみたいだ....

参考サイト

https://blogs.oracle.com/randystuph/entry/injecting_jndi_datasources_for_junit

 

JUnitでのテスト時には、サーバーを起動しないためtaransaction-type="RESOURCE-LOCAL"での実行になる → EntityManagerFactoryの読み込みが変わる

テストクラスで、実装したものを使用して実行する

 

やっぱり、NoInitialContextExceptionがでる......

 

Mavenを使用しての単体テストではpropertyをソースから指定してやる。

persistence.xmlのプロパティを直接読み込む必要がある

PersistenceUnitProperties.プロパティ名を使用してPropertiesに値を設定→テスト

を繰り返したが.... ダメ

 

仕切り直し、下記のようにpersistence.xmlを書き直す。

<persistence-unit name="NoJta" transaction-type="RESOURCE_LOCAL">

        <jta-data-source>jdbc/プロジェクト名</jta-data-source>

        <class>エンティティクラス</class>

       <properties>

<property name="persistenceXmlLocation" value="META-INF/persistence.xml" />

            <property name="javax.persistence.jdbc.driver" value="org.postgresql.Driver"/>

            <property name="javax.persistence.jdbc.url" value="jdbc:postgresql://localhost:5432/postgres"/>

            <property name="javax.persistence.jdbc.user" value="ユーザー名"/>

            <property name="javax.persistence.jdbc.password" value="パスワード"/>

            <property name="eclipselink.ddl-generation" value="none"/>

<property name="eclipselink.id-validation" value="NONE"/>

        </properties>

</persistence-unit>

 テスト実行、エラーなし!!!!

今までの苦労がーーーーー!!

 

まぁ勉強になったけどね⭐️

このサイトは参考になりました。

Eclipse Community Forums: EclipseLink » EclipseLink + RCP + OSGI Service: No Persistence provider for EntityManager

 

総称型のキャスト

List<? extends SampleIF> list = getSample();

***** ここでキャストを行いたい ******

下記のようなクラスへとキャストを行いたいがエラーがでる。

public class Customer implements SampleIF { ....}

 

>Cannot cast from Class<capture#1-of ? extends SampleIF> to SampleIF

 

現状、意図する解決策が見つからず、フツーにキャストを行う形でエラーを解消

 

ArrayList<Customer> cusList = new ArrayList<Customer>();

for (SampleIF smp : list) {

      Customer cus = (Customer) smp;

      cusList.add(cus);

}

うーむ、ラムダ式を使うべきだな,,,,

jpaのテストを実行したら、データが消えた

jpaでエンティティを作成しいざテスト...

エラーはないがデータが取得できない、0件取得だった

 

データはDBに登録したけれどはて?......

 

DBを確認する...データがない、DROPされてる?

 

persistence.xml

            <property name="eclipselink.ddl-generation" value="drop-and-create-tables"/>

のような記述をしていたので、実行後、見事にデータが吹っ飛んでしまったというわけです。下記のように修正

            <property name="eclipselink.ddl-generation" value="none"/>

データは無事だったが次は

[EL Warning]: 2016-02-06 21:13:22.41--UnitOfWork(2021601975)--Exception [EclipseLink-7197] (Eclipse Persistence Services - 2.5.2.v20140319-9ad6abd): org.eclipse.persistence.exceptions.ValidationException

。。。。

[jp.zenryoku.frw.entity.MenuMST@65bcf7c2], primary key [0]. Set descriptors IdValidation or the "eclipselink.id-validation" property.

javax.persistence.RollbackException: Exception [EclipseLink-7197] (Eclipse Persistence Services - 2.5.2.v20140319-9ad6abd): org.eclipse.persistence.exceptions.ValidationException

Exception Description: Null or zero primary key encountered in unit of work clone 

のようなエラーが...

https://www.eclipse.org/forums/index.php/t/476633/

このサイトを参照して、一応解決したが,,,英語が読めるとよいのだが......

 

 

 

Mavenの使い方

eclipsemavenを使用した開発が便利なのはわかるがやり方と考え方が。。。

 

調べたのでまとめておく

参考サイト:https://maven.apache.org/pom.html

 

1.mvn install コマンド

・pox.xmlに定義したライブラリをローカルリポジトリ(Mavenリポジトリ)

  にインストール→開発プロジェクトから参照できるようになる

*自分の作成するものに関しては全角表示

pom.xml----------------------------------------------------------------------

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

<!-- このプロジェクトに関する情報 -->

<modelVersion>4.0.0</modelVersion>

<groupId>グループID</groupId>

<artifactId>アーティファクトID</artifactId>

<version>バージョン</version>

<packaging>出力するファイル形式(war, earなど)</packaging>

<description>説明書き</description>

<dependencies>

 

<!-- 追加したいライブラリ -->

<dependency>

<groupId>対象のライブラリグループID</groupId>

<artifactId>アーティファクトID</artifactId>

<version>バージョン</version>

</dependency>

</dependencies>

<repositories>

 

<!-- 参照するライブラリをインストールするリモートリポジトリ -->

<repository>

<!-- Primeface -->

<id>primefaces-repository</id>

<name>Primefaces repository</name>

<url>http://repository.primefaces.org</url>

</repository>

</repositories>

 

<!-- プラグイン -->

<build>

<plugins>

<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-dependency-plugin</artifactId>

<version>2.6</version>

<executions>

<execution>

<phase>validate</phase>

<goals>

<goal>copy</goal>

</goals>

<configuration>

<outputDirectory>${endorsed.dir}</outputDirectory>

<silent>true</silent>

<artifactItems>

<artifactItem>

<groupId>javax</groupId>

<artifactId>javaee-endorsed-api</artifactId>

<version>7.0</version>

<type>jar</type>

</artifactItem>

</artifactItems>

</configuration>

</execution>

</executions>

</plugin>

</plugins>

----------------------------------------------------------------------

2.mavenでのデプロイはdistributionManagementタグで追加

 <distributionManagement>
    <repository>
      <id>deploy-repository</id>
      <name>deployRepository</name>
      <url>file://${env.M2_HOME}/deployRepository</url>
    </repository>
  </distributionManagement>

 

ここまで来て、エラーが解消できなかったが。。。

「Could not find artifact....」とのエラーは

<projectタグ直下の<argifactId>を修正し、faces-config.pagefllowファイルのcinfigfileの値を修正したら解消できました。