Загрузка класса во время выполнения - PullRequest
0 голосов
/ 04 августа 2011

У меня есть код, который загружает класс во время выполнения:

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

Но, похоже, есть проблемы с этим и IKVM - мне было интересно, есть ли какие-нибудь альтернативные способы достижения вышеуказанного в моей Java-программе или кто-нибудь знал, почему это может вызвать ошибку, вызванную ikvm?

Спасибо

извините - я не знал, как это выяснить, мне потребовались целые годы, чтобы зайти так далеко! Это отражено в операторе Exception e catch, и я почти уверен, что оно выдается строкой, указанной выше

classname IKVM.NativeCode.java.lang.Class Имя файла null Имя метода forName0 Номер строки -1 имя класса java.lang.Class Имя файла Class.java Имя метода forName0 Номер строки -2 имя класса java.lang.Class Имя файла Class.java Имя метода forName Номер строки 287 classname Имя тестового файла Test.java Имя метода init Номер строки 50 имя класса Test Имя файла Test.java Имя метода isPDFAvailable Номер строки 24 имя класса cli.Analytical_Report.Form1 Имя файла Form1.cs Имя метода hasGains Строка № 296 имя класса cli.Analytical_Report.Form1 Имя файла Form1.cs Имя метода defineAvailableData Номер строки 209 имя класса cli.Analytical_Report.Form1 Имя файла Form1.cs Имя метода takeFile Строка № 71 имя класса cli.Analytical_Report.Form1 Имя файла Form1.cs Имя метода btnSelectFile_Click Номер строки 49 имя класса cli.System.Windows.Forms.Control Имя файла null Имя метода OnClick Номер строки -1 имя класса cli.System.Windows.Forms.Button Имя файла null Имя метода OnClick Номер строки -1 имя класса cli.System.Windows.Forms.Button Имя файла null Имя метода OnMouseUp Номер строки -1 имя класса cli.System.Windows.Forms.Control Filename null Имя метода WmMouseUp Номер строки -1 имя класса cli.System.Windows.Forms.Control Имя файла null Имя метода WndProc Номер строки -1 имя класса cli.System.Windows.Forms.ButtonBase Имя файла null Имя метода WndProc Номер строки -1 имя класса cli.System.Windows.Forms.Button Имя файла null Имя метода WndProc Строка номер -1 класс cli.System.Windows.Forms.Control $ ControlNativeWindow Имя файла null Имя метода OnMessage Номер строки -1 имя класса cli.System.Windows.Forms.Control $ ControlNativeWindow Имя файла null Имя метода WndProc Номер строки -1 имя класса cli.System.Windows.Forms.NativeWindow Имя файла null Имя метода DebuggableCallback Строка номер -1 имя класса cli.System.Windows.Forms.UnsafeNativeMethods Имя файла null Имя метода DispatchMessageW Номер строки -1 имя класса cli.System.Windows.Forms.Application $ ComponentManager Имя файла null Название метода System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop Номер строки -1 класс cli.System.Windows.Forms.Application $ ThreadContext Имя файла null Имя метода RunMessageLoopInner Номер строки -1 имя класса cli.System.Windows.Forms.Application $ ThreadContext Имя файла null Имя метода RunMessageLoop Номер строки -1 имя класса cli.System.Windows.Forms.Application Имя файла null Имя метода Выполнить Номер строки -1 имя класса cli.Analytical_Report.Program Имя файла Program.cs Имя метода Main Line номер 18 имя класса cli.System.AppDomain Имя файла null Имя метода _nExecuteAssembly Line число -1 имя класса cli.System.AppDomain Имя файла null Имя метода ExecuteAssembly Строка номер -1 имя класса cli.Microsoft.VisualStudio.HostingProcess.HostProc Имя файла null Имя метода RunUsersAssembly Номер строки -1

Ответы [ 3 ]

1 голос
/ 09 сентября 2013

Другой формат базы данных и драйвер JDBC, но он будет работать для вас с небольшой модификацией для оракула и драйвера оракула (полные пространства имен для ясности):

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);
1 голос
/ 04 августа 2011

Впервые слышу об ikvm, но постараюсь помочь.

Во-первых, еще один способ загрузить драйвер JDBC -

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

Во всяком случае, я прочитал на веб-сайте ikvm, что вы должны конвертировать ваши JAR-файлы в DLL-файлы с помощью команды ikvmc.Вы уже преобразовали JAR драйвера Oracle в DLL?И: вы уверены, что сделали классы в этом JAR / DLL доступными для программы?(Каким бы ни был эквивалент для пути к классам Java)

Надеюсь, это поможет!

0 голосов
/ 13 августа 2011

Вы можете посмотреть в IKVM wiki для ClassLoader или описать вашу проблему лучше.

...