繁体   English   中英

在运行时加载类

[英]Loading a class at runtime

我有一些代码在运行时加载类:

Class.forName("oracle.jdbc.driver.OracleDriver");

但是这和IKVM似乎存在问题 - 我想知道是否有任何其他方法可以在我的Java程序中实现上述目标,或者是否有人知道为什么可能导致ikvm发布?

谢谢

对不起 - 我不知道如何找到它,它花了我很多时间来达到这个目标! 这是在Exception e catch语句中捕获的,我很确定它是由上面发布的行抛出的

classname IKVM.NativeCode.java.lang.Class Filename null方法名称forName0行号-1 classname java.lang.Class文件名Class.java方法名称forName0行号-2 classname java.lang.Class文件名Class.java方法名称forName行number 287 classname测试文件名Test.java方法名称init行号50 classname测试文件名Test.java方法名称isPDFAvailable行号24 classname cli.Analytical_Report.Form1文件名Form1.cs方法名称hasGains行号296 classname cli.Analytical_Report.Form1文件名Form1 .cs方法名称determineAvailableData行号209 classname cli.Analytical_Report.Form1文件名Form1.cs方法名称consumeFile行号71 classname cli.Analytical_Report.Form1文件名Form1.cs方法名称btnSelectFile_Click行号49 classname cli.System.Windows.Forms.Control Filename null方法名称OnClick行号-1 classname cli.System.Windows.Forms.Button文件名null方法名称OnClick行号-1 classname cli.System。 Windows.Forms.Button文件名null方法名称OnMouseUp行号-1 classname cli.System.Windows.Forms.Control文件名null方法名称WmMouseUp行号-1 classname cli.System.Windows.Forms.Control文件名null方法名称WndProc行号-1 classname cli.System.Windows.Forms.ButtonBase Filename null方法名称WndProc行号-1 classname cli.System.Windows.Forms.Button文件名null方法名称WndProc行号-1 classname cli.System.Windows.Forms.Control $ ControlNativeWindow Filename null方法名称OnMessage行号-1 classname cli.System.Windows.Forms.Control $ ControlNativeWindow Filename null方法名称WndProc行号-1 classname cli.System.Windows.Forms.NativeWindow文件名null方法名称DebuggableCallback行号 - 1 classname cli.System.Windows.Forms.UnsafeNativeMethods Filename null方法名称DispatchMessageW行号-1 classname cli.System.Windows.Forms.Application $ ComponentManager Filename null方法名称System.Windows.Form s.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop行号-1 classname cli.System.Windows.Forms.Application $ ThreadContext Filename null方法名称RunMessageLoopInner行号-1 classname cli.System.Windows.Forms.Application $ ThreadContext Filename null方法名称RunMessageLoop Line number -1 classname cli.System.Windows.Forms.Application Filename null方法名称运行行号-1 classname cli.Analytical_Report.Program文件名Program.cs方法名称主行号18 classname cli.System.AppDomain文件名null方法名称_nExecuteAssembly行number -1 classname cli.System.AppDomain Filename null方法名称ExecuteAssembly行号-1 classname cli.Microsoft.VisualStudio.HostingProcess.HostProc文件名null方法名称RunUsersAssembly行号-1

不同的数据库格式和JDBC驱动程序,但它可以为您工作,只需稍加修改oracle和oracle驱动程序(为了清晰起见,完整的命名空间):

java.lang.Class.forName(typeof(org.hsqldb.jdbcDriver).AssemblyQualifiedName);
java.sql.DriverManager.registerDriver(new org.hsqldb.jdbcDriver());
conn = java.sql.DriverManager.getConnection(url, username, password);

这是我第一次听说ikvm,但我会尽力帮忙。

首先,加载JDBC驱动程序的另一种方法是使用

DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());

无论如何,我已经在ikvm网站上看到你必须使用命令ikvmc将你的JAR转换为DLL。 您是否已将Oracle驱动程序JAR转换为DLL? 并且:你确定你已经使这个JAR / DLL中的类可用于该程序吗? (与Java类路径无关)

希望有所帮助!

您可以在IKVM wiki中查看ClassLoader或更好地描述您的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM