我有一些代码在运行时加载类:
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行号287 classname测试文件名 Test.java方法名称init行号50 classname测试文件名 Test.java方法名称为PDFAvailable行号24类名 cli.Analytical_Report.Form1 Filename Form1.cs方法名称hasGains 行号296 classname cli.Analytical_Report.Form1文件名 Form1.cs方法名称determineAvailableData行号209 classname cli.Analytical_Report.Form1 Filename 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类名 cli.System.Windows.Forms.Button Filename null方法名称OnMouseUp 行号-1 classname cli.System.Windows.Forms.Control文件名 null方法名称WmMouseUp行号-1 classname cli.System.Windows.Forms.Control Filename null方法名称WndProc 行号-1 classname cli.System.Windows.Forms.ButtonBase文件名 null方法名称WndProc行号-1类名 cli.System.Windows.Forms.Button Filename null方法名称WndProc Line 数字-1类名 cli.System.Windows.Forms.Control $ ControlNativeWindow文件名为null 方法名称OnMessage行号-1类名 cli.System.Windows.Forms.Control $ ControlNativeWindow文件名为null 方法名称WndProc行号-1类名 cli.System.Windows.Forms.NativeWindow Filename null方法名称 DebuggableCallback行号-1类名 cli.System.Windows.Forms.UnsafeNativeMethods Filename null方法名称 DispatchMessageW行号-1类名 cli.System.Windows.Forms.Application $ ComponentManager Filename null 方法名称 System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop 行号-1类名 cli.System.Windows.Forms.Application $ ThreadContext Filename null 方法名称RunMessageLoopInner行号-1 classname cli.System.Windows.Forms.Application $ ThreadContext Filename null 方法名称RunMessageLoop行号-1类名 cli.System.Windows.Forms.Application Filename null方法名称运行 行号-1 classname cli.Analytical_Report.Program文件名 Program.cs方法名称主行号18类名 cli.System.AppDomain Filename null方法名称_nExecuteAssembly行 number -1 classname cli.System.AppDomain Filename null方法名称 ExecuteAssembly行号-1类名 cli.Microsoft.VisualStudio.HostingProcess.HostProc文件名为null 方法名称RunUsersAssembly行号-1
答案 0 :(得分:1)
这是我第一次听说ikvm,但我会尽力帮助。
首先,加载JDBC驱动程序的另一种方法是使用
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
无论如何,我已经在ikvm网站上看到你必须使用命令ikvmc将你的JAR转换为DLL。您是否已将Oracle驱动程序JAR转换为DLL?并且:你确定你已经使这个JAR / DLL中的类可用于该程序吗? (与Java类路径无关)
希望有所帮助!
答案 1 :(得分: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);
答案 2 :(得分:0)
您可以查看IKVM wiki for ClassLoader或更好地描述您的问题。