「Web出版サイト」ベータ公開

Q&A集[?]

当サイトでのご質問の受付は終了しました

すべてのコンテンツを読み込み専用としたため、回答欄からも投稿できません

Apache OpenOffice/LibreOfficeのご質問はそれぞれのフォーラムへご投稿ください

質問コーナー

サイト内検索

分類メニュー

関連サイト


本日:2
昨日:0
総数:1847
現在:3


Javaのメソッドの呼び出しが出来ない

ページOpenOffice.org FAQの登録ページ
投稿者T.Asa
分類
edit/refer
優先順位
edit/refer
状態
edit/refer
カテゴリー
edit/refer
投稿日2007-09-04 03:10:39 (火)
OSWindows XP
依存するページ
バージョン
edit/refer

メッセージ

回答ページでは行末に「~」を付加する必要はありません

HSQLDBのページに,SELECT文の中などでjavaの静的メソッドを呼び出せるとかかれており実際に,
SELECT "java.lang.Math.sqrt"(2.0) AS "TEST1"
FROM "PART" AS "PART"
等とすると,java.lang.Mathの関数が使えるようだったので,今度は次のようなクラスを自分で用意して,使えるか試しているのですが...

// asa.java
class asa{
    public static int format(int data) {
        return (data + 1);
    }
}


このjavaファイルを(コンパイルして)入れたフォルダをクラスパスに登録しても,このクラスのメソッドが使えません.
何が間違っているのでしょうか.


面白いですね

M.Kamataki (2007-09-04 11:43:21 (火))

SELECT "java.lang.Math.sqrt"(2.0)〜

は動作しますね。

さて、問題を切り分けるために以下のことを試してみてはどうでしょうか。

  1. OpenOffice.orgに登録するクラスパスではなく、Java規定のクラスパス InstallFolder\lib\ext へ置くとどうか。
  2. HSQLDBをネイティブで動かしてみた場合はどうか

2.ですが、以下のサイトなどが参考になります。
http://www.wakhok.ac.jp/~tomoharu/db2004/hsqldb/
http://www50.tok2.com/home/oppama/hsqldb-start.html

また、OpenOffice.org内のHSQLDBのjarファイルは、OpenOffice.orgの InstallFolder\program\classes にあります。

コンパイルがうまくいってないみたい.

T.Asa (2007-09-04 13:10:29 (火))

いろいろ調べて,どうもjdkの登録がうまくいっていなくて,私の環境ではjavaのプログラムのコンパイルがうまくいってないみたいです.

JDKを全部削除して入れ直すとできるようになったようです.

T.Asa (2007-09-04 13:31:50 (火))

classはpublic class asaにする必要がありました.
以前に,JDKを新しいバージョンから順に複数インストールしてしまっていました.
一旦全てのJDKを削除して1つのバージョンだけを入れ直すとそのバージョンでコンパイルされた物は使えるようになりました.
M.Kamatakiさんありがとうございました.

もう一度 詳しく教えてください

imaicom23 (2010-11-21 16:44:57 (日))

JAVAで以下のような内容のファイルをファイル名「UDFTestJava.java」で作成し、コンパイルまではしました。

public class UDFTestJava {

public static int add (int a, int b) {
int c = a + b;
return c;
}

}

そして、Openoffice.org Baseクエリから

SELECT "UDFTestJava.add"("f1","f2") FROM "t1"

みたいな感じで、使いたいですが、これではだめみたいで、「データ内容が読み込めませんでした。」と、エラーになってしまいます。

あと何か必要なことがあるでしょうか?

上の投稿では、「jdkの登録がうまくいっていな」かったようですが、登録がうまくいっているかどうかどうしたら確認できるでしょうか?もう一度 詳しく教えていただけないでしょうか?

Re: もう一度 詳しく教えてください

M.Kamataki (2010-11-22 11:23:46 (月))

JDKをインストールすると同梱されているJREもインストールされますよね。インストール済みのJREをアンインストールしてみたらどうでしょうか。

そして作成された「〜.jar」というファイルが、OpenOffice.orgが認識するクラスパスで示すフォルダに置かれているかどうか確認してください。

上述した「Java規定のクラスパス」は、OpenOffice.orgの「Javaオプション」画面の設定より優先されます。「Java規定のクラスパス」に「〜.jar」を置くというのが、最も間違いがないと思います。

OpenOffice.orgの「Javaオプション」画面は、メニューの「ツール」-「オプション」で表示されたダイアログの「OpenOffice.org」-「Java」をたどります。OpenOffice.orgで設定するクラスパスはこの画面で「クラスパス」ボタンをクリックして設定します。

また、この「Javaオプション」画面で、複数のJREがインストールされているかどうかもわかります。複数表示された場合は、JDK同梱のJREを残して他はアンインストールしてみましょう。

なお、こちらの質問をされたT.Asaさんの回答はたぶんのぞみが薄いと思います。

「〜.jar」?

imaicom23 (2010-11-22 20:46:57 (月))

初心者で申し訳ないですが、もしかすると、自作クラスって、「〜.jar」形式にしないとOpenOffice.orgで使えないのでしょうか?
「jar」で検索したら、「jar」形式にする方法があったので、試してみます。

JREアンインストールしてみました

imaicom23 (2010-11-22 21:08:58 (月))

JREアンインストールしてみました
クラスパスも大丈夫と思いますが…
「jar」形式にしてためしてみました
やっぱり以下のエラーが出ます

SQL ステータス: S1000
エラーコード: -33

Access is denied: UDFTestJava.add in statement [SELECT "UDFTestJava.add"("f1","f2") FROM "t1"]

このステートメントおかしいでしょうか?
念のためJavaファイルも添付します
おかしいところがあるようでしたら 教えてください

クラスパス設定状態

imaicom23 (2010-11-22 21:25:41 (月))

あと、クラスパス設定状態も添付します
おかしいところありましたら、教えてください

Re: 「〜.jar」?

M.Kamataki (2010-11-23 11:29:55 (火))

「〜.jar」ファイルもアップしてください。

jarファイル アップしました

imaicom23 (2010-11-23 12:20:36 (火))

jarファイル アップしました
よろしくお願いします

サンプルは動作しませんね

M.Kamataki (2010-11-25 00:21:21 (木))

原因はわからないのですが、サンプルは動作しませんね。

以下のサイトを見ても、「Javaのクラスに定義した静的メソッドをHSQLDBのクエリから呼び出して使うことができます。」とありますから、ユーザー定義関数の作成方法としては間違っていないとは思います。

http://lumber-mill.co.jp/gallery/view/tips/java/hsqldb#p12

ちなみにエイリアスを登録しても「Access is denied: UDFTestJava.add in statement〜」エラーになるので、作成したUDFTestJava.jarファイルは認識されていないようです。

>「jar」で検索したら、「jar」形式にする方法があったので、試してみます。

どちらを参考にされましたか? もしかするとjarファイルの作成方法に問題があるのかもしれません。以下を参考に「実行可能なJARファイル」にしてみるとか、試してみてください。

http://www.fk.urban.ne.jp/home/kishida/kouza/old/javajar.html

HSQLDBはJavaで実装されているデータベースなので、そのソースにJavaコードを加える方法でユーザー定義関数を加える方法もあるようです。以下のような解説ページもありました。

オレオレSQL関数の作り方〜HSQLDB編〜
http://d.hatena.ne.jp/wyukawa/20080815/1218824824

検証に感謝します

imaicom23 (2010-11-26 13:10:47 (金))

早速検証してくださり、感謝いたします。
「jar」ファイルは、紹介されているのと同じサイトを参考にしました。
「オレオレSQL関数…」も見ましたが、「ソース」というのはどのファイルのことか分からなかったのですが、どのこにあるんでしょうか?
いずれにしても、ファイルの作り方が悪いようですので、JAVA勉強しなおして、うまくいきましたら報告します。

ソース

M.Kamataki (2010-11-26 14:48:47 (金))

HSQLDBのソースは、Baseと同じバージョンのものは例えば以下にあります。

http://sourceforge.net/projects/hsqldb/files/hsqldb/hsqldb_1_8_0/

お名前:
題名:


添付ファイル: fileUDFTestJava.jar 445件 [詳細] filetest.odt 445件 [詳細] fileUDFTestJava.java 387件 [詳細]