Uruchomienie pliku Java .jar wewnątrz Mql

O jezykach programowania w platformach i nie tylko.
MkubuxK
Pasjonat
Pasjonat
Posty: 1051
Rejestracja: 20 maja 2009, 18:27

Uruchomienie pliku Java .jar wewnątrz Mql

Nieprzeczytany post autor: MkubuxK »

Zaprogramowałem plik w Java do rozszerzenia .jar i chciałbym wywołać go wewnątrz kodu mql.

Zimportowałem
#import kernel32.dll
int WinExec(string NameEx, int dwFlags);


i następnie w funkcji start() uruchomiłem swój plik

WinExec(sciezka/program.jar komenda1 komenda2,0);

Nic się nie dzieje. Czy nie powinienem skorzystać z innej funkcji ? Jeśli tak to z jakiej ? Znalazłem jeszcze coś takiego:

execl("java","java","jar myprog.jar komenda1 komenda2",NULL);

jednakże nie wiem jaką bibliotekę zimportowac by móc z niej korzystac.
fx-forum

Awatar użytkownika
Esco
Przyjaciel Forum
Przyjaciel Forum
Posty: 2603
Rejestracja: 11 kwie 2010, 20:56

Nieprzeczytany post autor: Esco »

Kod: Zaznacz cały

WinExec("javaw.exe sciezka/program.jar komenda1 komenda2",0); 

Kod: Zaznacz cały

ShellExecute(NULL, "open", "javaw.exe sciezka/program.jar komenda1 komenda2', NULL, NULL, SW_SHOW) )

MkubuxK
Pasjonat
Pasjonat
Posty: 1051
Rejestracja: 20 maja 2009, 18:27

Nieprzeczytany post autor: MkubuxK »

Rozwinę może trochę myśl bo nadal mi nie wychodzi.

Pomysł jest taki. Jeden skrypt zapisuje wszystkie obiekty jakie mam na wykresie do pliku ( linie s/r , linie trendu, etc ). Plik wysyła na serwer FTP. ( do tego momentu wszystko jest ok, plik znajduje się już na FTP ). Następnie na innym komputerze odpalany jest skrypt który pobiera ten plik i zapisuje go w folderze MT4. ( Nie potrafiłem połączyć się przez MT4 z serwerem FTP i pobrać z niego plik więc napisałem prosty program w Javie ).

Zerknij jeszcze na to jak możesz:

(...)jakiś kod(...)
string path=TerminalPath();
WinExec("javaw.exe -jar "+ path+"/experts/files/ftp.jar"+ " C:\\",0)


Wyrzuca błąd: unnable to access Jar file



Plik napisany w Javie łączy się z serwerem ftp, pobiera stamtąd plik, który zapisuje w folderze C:// ( dla uproszczenia, docelowo ma pobierać plik i zapisywać go w folderze files Mt4. Następnie uruchamiam skrypt który wszystko zapisuje na wykresie. Dzięki temu w prosty sposób moge przenosić swoje kreski na inne platformy na innych komputerach i aktualizowac je na bieżąco tak żeby wszędzie mieć to samo.
fx-forum

Awatar użytkownika
Esco
Przyjaciel Forum
Przyjaciel Forum
Posty: 2603
Rejestracja: 11 kwie 2010, 20:56

Nieprzeczytany post autor: Esco »

Ukośniki w złą stronę to nie Linux.

Edit:


a ja sie pomyliłem bo przepisywałem od Ciebie.:lol:

Przepraszam za wprowadzenei w błąd.

MkubuxK
Pasjonat
Pasjonat
Posty: 1051
Rejestracja: 20 maja 2009, 18:27

Nieprzeczytany post autor: MkubuxK »

Poprawiłem i błąd jest ten sam:

Unnable to access Jar File.




Usunałem z funkcji WinExec przedrostek -jar , przerobiłem plik Javy by nie potrzebował żadnych dodatkowych parametrów i otrzymuję błąd:

Could not find the main class. Pobieżnie szukając znalazłem informację że tego typu błąd może być spowodowany wadliwą instalacją środowiska Javy ( virtual machine ). Tyle że programuje inne aplikacje i nie spotkałem się z tego typu błędem wcześniej.

WinExec("javaw.exe"+" "+ path+"\experts\files\ftp.jar",0);
zamiast
WinExec("javaw.exe -jar"+" "+ path+"\experts\files\ftp.jar",0);
fx-forum

Awatar użytkownika
Esco
Przyjaciel Forum
Przyjaciel Forum
Posty: 2603
Rejestracja: 11 kwie 2010, 20:56

Nieprzeczytany post autor: Esco »

A normalnie po podwójnym kliknięciu się uruchamia?

MkubuxK
Pasjonat
Pasjonat
Posty: 1051
Rejestracja: 20 maja 2009, 18:27

Nieprzeczytany post autor: MkubuxK »

Tak uruchamia się.



Może poleci ktoś bibliotekę do połączenia się z FTP i ściągnięcia pliku na dysk ?
fx-forum

Awatar użytkownika
Esco
Przyjaciel Forum
Przyjaciel Forum
Posty: 2603
Rejestracja: 11 kwie 2010, 20:56

Nieprzeczytany post autor: Esco »

Kod: Zaznacz cały

#import "shell32.dll"
int ShellExecuteA(int hWnd,int lpVerb,string lpFile,int lpParameters,int lpDirectory,int nCmdShow);
#import

Kod: Zaznacz cały

ShellExecuteA(0,0,"path+"\experts\files\ftp.jar"",0,0,5);
Spróbuj powyższego kodu. Wywołanie odpowiada dokładnie podwójnemu kliknięciu.

green7
Maniak
Maniak
Posty: 2060
Rejestracja: 16 sty 2008, 18:44

Nieprzeczytany post autor: green7 »

Poco się tak męczyć z tą javą.
Jak chcesz tylko pobrać plik z ftpa to weź i odpal curl.exe.
Możesz łatwo podać mu parametry - host, hasło itd. Odpadnie Ci martwienie się o środowisko uruchomieniowe javy.

A tak ogólnie to jawa może nie być dostępna na ścieżce. Więc jak odpalasz coś poprzez WinExec czy tam ShellExecute to najpewniej jest odplalić java.exe podając wraz ze ścieżką. Jako parametr przekazujesz ścieżkę do jar itp.
Green
Obrazek
Obrazek

MkubuxK
Pasjonat
Pasjonat
Posty: 1051
Rejestracja: 20 maja 2009, 18:27

Nieprzeczytany post autor: MkubuxK »

Drugiej pochwały już nie będę wystawiał ale Shell32 działa. Fantastyczna funkcja.

Korzystam z Javy bo jest dla mnie łatwiejsza i większość rzeczy jakie wymyślę jestem w stanie napisać. Java jest moim pierwszym językiem.

Jakbyś mógł pokazać dokładniej Green jak wykorzystać curl.exe wraz z parametrem, który mu się podaje ( strona www i miejscem na dysku ) to również pochwała się będzie należeć. Narazie jako laik z C nie potrafię tego obsłużyć.
fx-forum

ODPOWIEDZ