2016-03-29 12 views
1

私はFactual APIのJava実装(参考資料http://developer.factual.com/)をとり、事実のためのJARファイルを作成しました。私は実際のJavaファイルを使ってEclipseで新しいプロジェクトを開き、新しいjarファイルにエクスポートすることでこれを行いました。事実のAPIとcoldfusion

jarファイルを私のcoldfusionインストールの/ WEB-INF/lib /フォルダに入れました。

ColdFusionを再起動した後、私はそれが事実上のクラスを見つけることができないことを示すエラーが発生しますので、

<cfscript> 

    // Initialize the Java class. 
    factualClass=CreateObject("java", "src.main.java.com.factual.driver.Factual"); 

</cfscript> 

のような新しいcfobjectタグを作成しようとしました。

誰かからガイダンスをいただけますか?

+0

いいえ、瓶のいずれかの場所にあってもよいです。個人的には/ web-inf/libを使い、組み込みのjarファイルのみcfusion \ libを残す方が好きですが、後で再起動する限りどちらのディレクトリも機能します。 @ user2320726 - どのバージョンを使用していますか? CF10 +は、application.cfc、http://stackoverflow.com/questions/32001030/google-java-api-conflicted-with-coldfusion-cfhttp/32016842#32016842 – Leigh

+0

CF11を介した動的ロードをサポートしています...私はそれを間違っている可能性があります何とか私はjarファイルを作ったのですか?私は7-zipファイルマネージャーを使ってjar構造を見ることができます。パスは大丈夫です。 – user2320726

+0

またはcreateObjectパスがオフです。クラスの1つを見ると、基本パッケージは['com.factual.driver。*'](https:// github。fact/factual-java-driver/blob/master/src/main/java/com/factual/driver/Boost.java)を参照してください。それはあなたのjarファイルとcreateObjectステートメントの中にある構造体です。あなたの瓶のトップレベルのフォルダは何ですか?サイドノートは、あなたがやっていることはうまくいくのですが、CF11ではアプリケーションレベルのクラスローディングを使う方が簡単です。サーバーを再起動する必要はありません。上記のApplication.cfcリンクを参照してください。 – Leigh

答えて

0

は(コメントの概要)

ソースファイルをエクスポートすることができるようですねつまり* .classファイル、* .javaファイルではなく、コンパイル済みのクラスファイル、すなわち。 Jar Export wizardでは、「生成されたクラスファイルとリソースのエクスポート」オプションを必ず選択してください。 (expiの前にプロジェクトソースを自動的にコンパイルするには、JARパッケージ>プロジェクトを自動的にビルドしない場合はビルドオプション)を有効にします。あなたが好きなら、MVN repositoryでコンパイル済みのjarファイルを見つけることもできます。

私のcoldfusionインストールの/ WEB-INF/lib/ フォルダにjarファイルを入れてください。

CF10 +は、新しいアプリケーションレベル設定THIS.javaSettingsを使用した動的クラスローディングもサポートしています。

// Initialize the Java class. 
factualClass=CreateObject("java", "src.main.java.com.factual.driver.Factual"); 

ただ、注目点として、src/main/java/は実際にlibaryクラス名の一部ではありません。標準のディレクトリ構造used in Maven projectsです。ソースをエクスポートするときはおそらく含まれていますが、コンパイルされたクラスはエクスポートされません。

APIやjavadocsを調べたり、ソースファイルを表示したりすることで、正しいパスとクラス名をいつでも確認できます。

 package com.factual.driver; // ie "com.factual.driver" 

...とあなたに正確を与える39

 public class Factual { // ie "Factual" 

複合ライン上のクラス宣言(:Package declarationsは、このようなsrc/main/java/com/factual/driver/Factual.javaの1行目のように、ソースファイルの先頭に常にあります大文字と小文字を区別)のCreateObjectで使用するパス:

 factualClass=CreateObject("java", "com.factual.driver.Factual");