ERLEDIGT
JA
JA
ANTWORTEN
14
14
ZUGRIFFE
5641
5641
EMPFEHLEN
-
Servus hab da ein kleines Porblem mit mein Programmchen.
Wenn ich ein CommPort auf habe und dann mein Programm schließen möchte geht nur das Frame zu aber in Eclipse läuft es noch. Muss es dann über den Roten Button ausschalten.
Hier so sieht mein Prog.Code aus
public Root() {
super();
this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
System.runFinalizersOnExit(true);
}
/**
*Mein Destruktor
*/
protected void finalize(){
portaus.stop();
System.out.println("ENDE");
}
Hab gedacht mit einen Destrukter bekomme ich das hin und kann dann mein Thread mit portaus.stop(); beenden aber das geht ja nur wenn der Garbage Collector irgendwann aufgerufen wird und der dann mein Destruktor started.
Hat jemand vieleicht ein andere Idea wie ich Mein Prog schließen kann und am ende mein Thread stopen kann damit es aus geht
Danke schon mal.
-
24.02.05 11:00 #2
- Registriert seit
- Jun 2002
- Ort
- Saarbrücken (Saarland)
- Beiträge
- 9.886
- Blog-Einträge
- 29
Hallo!
tausch doch einfach:
this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
durch
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Gruß TomJava rocks!
How to become a good Java Programmer?
Does IT in Java and .Net
The only valid measurement of code quality: WTFs / minute
Blog
Xing
Twitter
-
Servus
hab deins mal versucht aber irgendwie bekomme ich edliche fehler und irgendeine seltsame ausgabe.
Fehler:
WaitCommEvent: Error 6
WaitCommEvent: ErrENDE
An unexpected exception has been detected in native code outside the VM.
Unexpected Signal : EXCEPTION_ACCESS_VIOLATION occurred at PC=0x7800F516 during VM shutdown
Function=setvbuf+0x24B
Library=C:\WINNT\system32\MSVCRT.dll
Current Java thread:
at com.sun.comm.Win32SerialPort.waitForEvent(Native Method)
at com.sun.comm.NotificationThread.run(Win32SerialPort.java:829)
Dynamic libraries:
0x00400000 - 0x00406000 C:\Programme\Java\j2re1.4.1_01\bin\javaw.exe
0x77880000 - 0x77903000 C:\WINNT\system32\ntdll.dll
0x79350000 - 0x793B2000 C:\WINNT\system32\ADVAPI32.dll
0x77E70000 - 0x77F35000 C:\WINNT\system32\KERNEL32.DLL
0x77D20000 - 0x77D91000 C:\WINNT\system32\RPCRT4.DLL
0x77E00000 - 0x77E65000 C:\WINNT\system32\USER32.dll
0x77F40000 - 0x77F7E000 C:\WINNT\system32\GDI32.DLL
0x78000000 - 0x78045000 C:\WINNT\system32\MSVCRT.dll
0x6D330000 - 0x6D45A000 C:\Programme\Java\j2re1.4.1_01\bin\client\jvm.dll
0x77540000 - 0x77571000 C:\WINNT\system32\WINMM.dll
0x6D1D0000 - 0x6D1D7000 C:\Programme\Java\j2re1.4.1_01\bin\hpi.dll
0x6D300000 - 0x6D30D000 C:\Programme\Java\j2re1.4.1_01\bin\verify.dll
0x6D210000 - 0x6D229000 C:\Programme\Java\j2re1.4.1_01\bin\java.dll
0x6D320000 - 0x6D32D000 C:\Programme\Java\j2re1.4.1_01\bin\zip.dll
0x6D000000 - 0x6D0FB000 C:\Programme\Java\j2re1.4.1_01\bin\awt.dll
0x777F0000 - 0x7780E000 C:\WINNT\system32\WINSPOOL.DRV
0x782F0000 - 0x78300000 C:\WINNT\system32\MPR.DLL
0x75DF0000 - 0x75E0A000 C:\WINNT\system32\IMM32.dll
0x77A40000 - 0x77B2F000 C:\WINNT\system32\ole32.dll
0x6E330000 - 0x6E336000 C:\WINNT\system32\INDICDLL.dll
0x6D180000 - 0x6D1D0000 C:\Programme\Java\j2re1.4.1_01\bin\fontmanager.dll
0x51000000 - 0x51047000 C:\WINNT\system32\ddraw.dll
0x72810000 - 0x72816000 C:\WINNT\system32\DCIMAN32.dll
0x72D90000 - 0x72E03000 C:\WINNT\system32\D3DIM.DLL
0x6D280000 - 0x6D29E000 C:\Programme\Java\j2re1.4.1_01\bin\jpeg.dll
0x6D2D0000 - 0x6D2DE000 C:\Programme\Java\j2re1.4.1_01\bin\net.dll
0x74FC0000 - 0x74FC9000 C:\WINNT\system32\WSOCK32.dll
0x74FA0000 - 0x74FB4000 C:\WINNT\system32\WS2_32.DLL
0x74F90000 - 0x74F98000 C:\WINNT\system32\WS2HELP.DLL
0x77830000 - 0x7783C000 C:\WINNT\System32\rnr20.dll
0x77970000 - 0x77994000 C:\WINNT\system32\DNSAPI.DLL
0x77310000 - 0x77323000 C:\WINNT\system32\iphlpapi.dll
0x774F0000 - 0x774F5000 C:\WINNT\system32\ICMP.DLL
0x772F0000 - 0x77307000 C:\WINNT\system32\MPRAPI.DLL
0x750C0000 - 0x750CF000 C:\WINNT\system32\SAMLIB.DLL
0x750E0000 - 0x7512F000 C:\WINNT\system32\NETAPI32.DLL
0x79430000 - 0x7943F000 C:\WINNT\system32\Secur32.dll
0x77BE0000 - 0x77BF1000 C:\WINNT\system32\NTDSAPI.dll
0x77940000 - 0x7796B000 C:\WINNT\system32\WLDAP32.DLL
0x75130000 - 0x75136000 C:\WINNT\system32\NETRAP.dll
0x779A0000 - 0x77A3B000 C:\WINNT\system32\OLEAUT32.DLL
0x77380000 - 0x773B0000 C:\WINNT\system32\ACTIVEDS.DLL
0x77350000 - 0x77373000 C:\WINNT\system32\ADSLDPC.DLL
0x77820000 - 0x7782E000 C:\WINNT\system32\RTUTILS.DLL
0x78310000 - 0x783A1000 C:\WINNT\system32\SETUPAPI.DLL
0x791A0000 - 0x79202000 C:\WINNT\system32\USERENV.DLL
0x774B0000 - 0x774E3000 C:\WINNT\system32\RASAPI32.DLL
0x77490000 - 0x774A1000 C:\WINNT\system32\RASMAN.DLL
0x77500000 - 0x77522000 C:\WINNT\system32\TAPI32.DLL
0x71710000 - 0x71794000 C:\WINNT\system32\COMCTL32.DLL
0x70A70000 - 0x70AD5000 C:\WINNT\system32\SHLWAPI.DLL
0x77330000 - 0x77349000 C:\WINNT\system32\DHCPCSVC.DLL
0x777D0000 - 0x777D8000 C:\WINNT\System32\winrnr.dll
0x777E0000 - 0x777E5000 C:\WINNT\system32\rasadhlp.dll
0x74F40000 - 0x74F5E000 C:\WINNT\system32\msafd.dll
0x74F80000 - 0x74F87000 C:\WINNT\System32\wshtcpip.dll
0x77910000 - 0x77933000 C:\WINNT\system32\imagehlp.dll
0x72970000 - 0x7299D000 C:\WINNT\system32\DBGHELP.dll
0x68F30000 - 0x68F3B000 C:\WINNT\system32\PSAPI.DLL
Local Time = Thu Feb 24 13:13:26 2005
Elapsed Time = 33
#
# The exception above was detected in native code outside the VM
#
# Java VM: Java HotSpot(TM) Client VM (1.4.1_01-b01 mixed mode)
#
-
Kannst du nicht einfach den Comm-Port vor dem Programmabschluss freigeben ? Daran wirds liegen oder ?
:-) möp
-
24.02.05 14:11 #5
- Registriert seit
- Jun 2002
- Ort
- Saarbrücken (Saarland)
- Beiträge
- 9.886
- Blog-Einträge
- 29
Hallo!
... okay jetzt seh ich was du machen willst... man sollte die Beiträge auch bis zum Ende lesen...
... shutdownHook to the Rescue
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
/* * Created on 24.02.2005 * */ package de.tutorials; /** * @author TDarimont */ public class ShutdownHookExample { static Thread shutdownThread = new Thread() { public void run() { System.out.println("some last Action..."); } }; public static void main(String[] args) { Runtime.getRuntime().addShutdownHook(shutdownThread); for (int i = 0; i < 100; i++) { System.out.println(i); } } }
Gruß TomJava rocks!
How to become a good Java Programmer?
Does IT in Java and .Net
The only valid measurement of code quality: WTFs / minute
Blog
Xing
Twitter
-
Servus
hab das jetzt hier in mein destrukter reingeschrieben
Runtime.getRuntime().addShutdownHook(Trans.portaus.runner);
runner = mein Thread
aber irgendwie passiert nix oder sollte ich diesen befehl wo anders hin schreiben?
-
24.02.05 17:17 #7
- Registriert seit
- Jun 2002
- Ort
- Saarbrücken (Saarland)
- Beiträge
- 9.886
- Blog-Einträge
- 29
Hallo!
In Java sollte man sich nie auf das Aufrufen eines finalisers verlassen geschweige denn Code dort hinterlegen. Vom Java Laufzeitsystem wird nämlich nicht garantiert, dass die finalize Methode jemals aufgerufen wird.....
Den shutdownHook setzt du am besten beim Starten deiner Anwendung.
Gruß TomJava rocks!
How to become a good Java Programmer?
Does IT in Java and .Net
The only valid measurement of code quality: WTFs / minute
Blog
Xing
Twitter
-
Servus
hab das in mein Konstruktor geschrieben
Runtime.getRuntime().addShutdownHook(Trans.portaus.runner);
aber dadurch bekomme ich ne NULLPOINTER Exception.
-
25.02.05 08:59 #9
- Registriert seit
- Jun 2002
- Ort
- Saarbrücken (Saarland)
- Beiträge
- 9.886
- Blog-Einträge
- 29
Hallo!
Dann hast du Trans.portaus.runner vor dem betretetn dieses Kontextes wohl noch nicht initialisiert...-> ist null. Das solltest du ändern.
Gruß TomJava rocks!
How to become a good Java Programmer?
Does IT in Java and .Net
The only valid measurement of code quality: WTFs / minute
Blog
Xing
Twitter
-
Servus
Hab meinen runner jetzt initialisiert aber jetzt geht mein Programm immer noch ned zu.
Was macht die funktion eigentlich Runtime.getRuntime().addShutdownHook(Trans.portaus.runner);
führt der die Funktion stop() für den Thread aus.
denn ich muss doch immer mein seriellen port schließen wenn ich das Programm schließe
serialPort.close();
-
25.02.05 09:43 #11
- Registriert seit
- Jun 2002
- Ort
- Saarbrücken (Saarland)
- Beiträge
- 9.886
- Blog-Einträge
- 29
Hallo!
nein, und das sollte man auch niemals....führt der die Funktion stop() für den Thread aus.
der Thread den du über addShutdownHook übergibst wird dann gestartet kurz bevor die VM beendet und führt seine run() Methode aus.
Gruß TomJava rocks!
How to become a good Java Programmer?
Does IT in Java and .Net
The only valid measurement of code quality: WTFs / minute
Blog
Xing
Twitter
-
Servus
hab jetzt in die RUN methode() ne System.out geschrieben aber irgendwie wird die nur einmal aufgerufen und das am anfang meines Programmes und dann wenn ich das Programm schließe müßte ich doch eigentlich die Ausgabe nochmal sehen weil er ja die run methode von den Thread nochmal ausführt?
Aber irgendwie passiert nix.
Kann es sein das mein VM einfach nicht ausgehen will
-
Servus
nehm alles zurück hab fehler gefunden.
Hatte doch fehler meldung bekommen durch
(Exit_on_Close)
hab das ganze jetzt nochmal gemacht.
Und jetzt schließt der das Programm aber halt nur wenn ich noch das mit denn
addShutdownHook(shutdownThread);
reinnehme.
Danke nochmal Thomas
-
25.02.05 10:35 #14
- Registriert seit
- Jun 2002
- Ort
- Saarbrücken (Saarland)
- Beiträge
- 9.886
- Blog-Einträge
- 29
Hallo!
hast du denn auch irgendwo einen aufruf von System.exit(0) stehen oder setzt du beim JFrame auch this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); ?
Gruß TomJava rocks!
How to become a good Java Programmer?
Does IT in Java and .Net
The only valid measurement of code quality: WTFs / minute
Blog
Xing
Twitter
-
Servus
ne ein aufruf von System.exit(0) hab ich nicht
nehm
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
aber jetzt hab ich das problem das mein prog nur noch ausgeht wenn ich ein port offen habe vorher nicht? *versteh ich nicht*
Ähnliche Themen
-
Swing Fenster per Button schließen, NICHT das Programm beenden
Von Markus im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 3Letzter Beitrag: 23.06.09, 12:53 -
Fenster schließen ohne Applikation zu beenden.
Von J1M1 im Forum VisualStudio & MFCAntworten: 1Letzter Beitrag: 11.11.07, 13:21 -
SWT: Beenden Dialog beim Schließen
Von ryoshi im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 7Letzter Beitrag: 26.06.07, 17:28 -
Programm beenden, Programm sichtbar starten
Von yui05 im Forum PHPAntworten: 0Letzter Beitrag: 25.04.05, 20:06 -
Programm beenden
Von smith99 im Forum JavaAntworten: 2Letzter Beitrag: 13.12.04, 14:36





Zitieren

Login





