Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Delphi и Java, Проблема с JNI 
V
    Опции темы
CynicRus
Дата 14.6.2012, 12:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 248
Регистрация: 31.5.2012

Репутация: нет
Всего: 5



Приветствую уважаемых форумчан. Пытаюсь сделать загрузчик для игры, написаной на java. Соответсвенно - для вызова необходимых мне функций из java приложения использую jni.pas:
Код

procedure TForm1.RunRS;
var
 JavaVM: TJavaVM;
 JNIEnv: TJNIEnv;
 Options: array [0..4] of JavaVMOption;
 VM_args: JavaVMInitArgs;
 Errcode: Integer;
 Cls: JClass;
 Mid: JMethodID;
 args: jobjectArray;
begin
 JavaVM := TJavaVM.Create(JNI_VERSION_1_6,'C:\Program Files\Java\jre7\bin\client\jvm.dll');
 Options[0].optionString := PAnsiChar(Params);
 VM_args.version := JNI_VERSION_1_6;
 VM_args.options := @Options;
 VM_args.nOptions := 1;
 Errcode := JavaVM.LoadVM(VM_args);
    if Errcode < 0 then
    begin

      Exit;
    end;
 JNIEnv := TJNIEnv.Create(JavaVM.Env);
 Cls := JNIEnv.FindClass('jagexappletviewer');
    if Cls = nil then
    begin
   
      Exit;
    end;
  Mid := JNIEnv.GetStaticMethodID(Cls, 'main', '([Ljava/lang/String;)V');
  args:= JNIEnv.NewObjectArray(1,JNIEnv.FindClass('java/lang/String'),0);
    if Mid = nil then
    begin
      Exit;
    end;
    JNIEnv.SetObjectArrayElement(args,0,JNIEnv.NewStringUTF('runescape.jar'));
    JNIEnv.CallStaticVoidMethod(Cls, Mid, []);
end;

Код собирается без ошибок, однако - по непонятной причине выдает: Access violation at address 6BF3D3D5 in MSVCR100.dll, read of address 0000000. jvm.dll - на всякий закинул даже в каталог с программой, все равно ошибка. В чем может быть проблема?
PS: по отладчику программа выпадает в функции jni.pas:
Код

function TJavaVM.LoadVM(const Options: JavaVMInitArgs): JInt;
begin
  if not FIsInitialized then
    raise EJVMError.Create('JavaVM has not been initialized');
  FJavaVMInitArgs := Options;
  Result := FJNI_CreateJavaVM(@FJavaVM, @FEnv, @FJavaVMInitArgs);
end;
 в строке
Код

Result := FJNI_CreateJavaVM(@FJavaVM, @FEnv, @FJavaVMInitArgs);
. т
Файл проекта прилагаю. Заранее извиняюсь за качество кода,  но - надо же как-то учиться-)
Project
PM MAIL   Вверх
Illusion Dolphin
Дата 14.6.2012, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1198
Регистрация: 3.5.2003

Репутация: 36
Всего: 63



Код

JavaVM := TJavaVM.Create(JNI_VERSION_1_6,'C:\Program Files\Java\jre7\bin\client\jvm.dll');


А не может быть что JNI_VERSION_1_6 не очень хорошо работает "jre7" (6<>7)?


--------------------
В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен.
Шифрование и организация фотографий - Photo Database 4.5
PM MAIL WWW ICQ   Вверх
CynicRus
Дата 14.6.2012, 15:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 248
Регистрация: 31.5.2012

Репутация: нет
Всего: 5



Ваше предположение оказалось верно, чуть поправил jni.pas  , и ошибка исчезла. Вот код поправленого модуля, может кому пригодиться
: http://pastebin.com/wrx0f2hx
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0416 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.