[英]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.