我有一个java类,我想在外部jar中加载一个类。
jar是xstream-1.4.2.jar,类是com.thoughtworks.xstream.XStream
我在谷歌搜索,但我无法插入我的项目(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上的第二天编程。
我想生成一个.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文件并在存储过程中使用它。
答案 0 :(得分:4)
查看URLClassLoader
,它允许您从外部JAR文件加载类。
/编辑
您的问题是您试图在对象的Class
上调用方法,而不是对象本身。如果要调用该方法,则需要创建Class
的{{3}}(请参阅提供的第二种方法),并在结果上调用该方法。
您确定您不仅希望在类路径上拥有该JAR文件并直接处理这些类,而不是使用反射来加载和实例化您需要的类吗?