-2

Javaクラスがあり、外部jar内にクラスをロードしたいと思います。

jarはxstream-1.4.2.jarで、クラスはcom.thoughtworks.xstream.XStreamです。

Googleで検索しましたが、プロジェクトへの外部参照を挿入できません(jar)

これは私のコードです:

File file  = new File("c:\\cubrid\\bin\\xstream-1.4.2.jar");
URL url = file.toURL();  
URL[] urls = new URL[]{url};
ClassLoader cl = new URLClassLoader(urls);
Class cls = cl.loadClass("com.thoughtworks.xstream.XStream");
cadena = cls.toXML(objeto);

メソッドを呼び出す方法がわかりません。Googleでいくつかのドキュメントを読みましたが、Javaでの2日目のプログラミングは申し訳ありません。

.classライブラリを生成したい。これは別のアプリケーション用にロードされます。このために、私はjarを外部にロードするためにいくつかのメソッドを使用する必要があります。

このクラスファイルは、JavaストアドプロシージャとしてCUBRIDデータベースサーバーにロードされます。

私の問題はエラーです:java.lang.reflect.InvocationTargetException

私のコード

import java.io.File;
import java.net.URL;
import java.net.URLClassLoader;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

import javax.xml.parsers.DocumentBuilderFactory;

public class jp2 {

    static ResultSet resultado = null;
    static String cadena = null;
    static Statement statement = null;
    static DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();   

public static String Validar(String tblUsuariosLogin,String tblUsuariosPassword)
{


    try {
        Class.forName("cubrid.jdbc.driver.CUBRIDDriver");
        Connection con = DriverManager.getConnection("jdbc:default:connection:"); 


            File file  = new File("c:\\cubrid\\bin\\xstream-1.4.2.jar");
            URL url = file.toURL();  
            URL[] urls = new URL[]{url};
            ClassLoader cl = new URLClassLoader(urls);

            Class cls = cl.loadClass("com.thoughtworks.xstream.XStream");

               // XStream xstream = new XStream();
                cadena = cls.toXML(objeto); 


            return cadena;

        } catch (Exception e) {
            // TODO: handle exception
        }
        return cadena;


    }



}

CUBRIDデータベースを使用すると、.classファイルをロードして、ストアドプロシージャで使用できます。

4

1 に答える 1

4

を見てくださいURLClassLoader。外部JARファイルからクラスをロードできます。

/ edit問題は、オブジェクト自体ではなく、オブジェクトの
メソッドを呼び出そうとしていることです。メソッドを呼び出す場合は、そのインスタンスの新しいインスタンスClassを作成し(提供されている2番目のメソッドを参照)、結果に対してメソッドを呼び出す必要があります。Class

必要に応じてクラスをロードしてインスタンス化するためにリフレクションを使用するのではなく、クラスパスにそのJARファイルを置き、クラスを直接処理したくないのですか?

于 2012-05-15T00:39:58.890 に答える