簡體   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