# Systemzeit ändern mit Java



## Nula (4. Apr 2012)

Hallo,

ich möchte die Systemzeit meines Rechners mit Hilfe einer Java-Application ändern.

Dies soll aber NICHT durch Aufruf von cmd.exe oder sonstigen vom Betriebssystem abhängigen Lösungen geschen.

Geht das mit JNI? Denn das greift doch auf die Hardware zu.
Und muss ich Stunde, Minute,... extra schreiben oder geht das mit den Millisekunden?

Ich habe keine Ahnung, wie ich das machen soll und habe auch nichts gefunden. 

LG


----------



## nillehammer (4. Apr 2012)

> Dies soll aber NICHT durch Aufruf von cmd.exe oder sonstigen vom Betriebssystem abhängigen Lösungen geschen.
> 
> Geht das mit JNI?


Das widerspricht sich. JNI ruft zwar nicht unbedingt Commandlinetools auf, ist aber durch das Laden von Bibliotheken genauso betriebssystemabhängig. Anders gehts aber nicht. Das einfachste ist, Du machst mit Runtime.exec einen Aufruf auf date.


----------



## Nula (4. Apr 2012)

Aber geht das mit JNI auch, wenn ich das auf einer Maschine laufen lasse, die weder Windows noch Linux drauf hat, sondern irgendwas anderes?


----------



## nillehammer (4. Apr 2012)

> Aber geht das mit JNI auch, wenn ich das auf einer Maschine laufen lasse, die weder Windows noch Linux drauf hat, sondern irgendwas anderes?


JNI an sich funktioniert sicher auch auf anderen Plattformen. Aber betriebssystemabhängig ist das immer:

Die Art der Libs (Windows: dlls, Unices: so-Files) ist abhängig vom Betriebssystem
Der Ort, wo die Libs liegen (Windows z.B. system32-Ordner, Unices: die diversen /lib-Ordner)
Die Methoden, die Du auf diesen externen Bibliotheken nutzen kannst.


----------



## Nula (4. Apr 2012)

Und wie mach ich das dann? Wie verändere ich auf eine plattformunabhängige Art die Systemzeit?

setTimeInMillis der class Calendar funzt nämlich nicht.

Oder geht das gar nicht?


----------



## Gast2 (4. Apr 2012)

Mit Java Boardmitteln geht das nicht. Dir bleibt da nur ne plattformabhängige Lösung.


----------



## nillehammer (4. Apr 2012)

Nula hat gesagt.:
			
		

> Und wie mach ich das dann? Wie verändere ich auf eine plattformunabhängige Art die Systemzeit?


Ich dachte, das hätte ich mit meinem ersten Post beantwortet. Es geht nicht Systemunabhängig. Ansonsten:


			
				nillehammer hat gesagt.:
			
		

> Anders gehts aber nicht. Das einfachste ist, Du machst mit Runtime.exec einen Aufruf auf date.


----------



## Gast2 (4. Apr 2012)

Bzw. time wenns die Uhrzeit sein soll.


----------



## Nula (4. Apr 2012)

Gibts da evtl. ein Besipiel? 

Weil ich habe nur das hier gefunden Systemzeit ändern - Java - Coder Board Community und da wird ja wieder cmd aufgerufen und das hab ich nicht.


----------



## irgendjemand (4. Apr 2012)

@TO ums mal einfach zu sagen : NEIN , es geht NICHT ohne system-mittel ... denn du willst ja auch die SYSTEM-zeit ändern

btw : JNI greift keinesfalls auf die hardware zu ... das tut einzige und allein der HAL ... welcher vom kernel gesteuert wird ...

JNI bietet lediglich die möglichkeit über eine java-native - bridge code aufzurufen welcher in für das OS verständlichen libs liegt ...

wie siehts dann also aus : java -> jni -> native -> os-lib -> kernel -> HAL -> hardware ...
das was du meinst (java -> jni -> hardware) geht so überhaupt nicht


----------



## nillehammer (4. Apr 2012)

> Weil ich habe nur das hier gefunden Systemzeit ändern - Java - Coder Board Community und da wird ja wieder cmd aufgerufen und das hab ich nicht.


Ok, dann sag doch mal, welches Zielsystem Du gerne bedienen möchtest!

Die Frage ist, ob auf dem von Dir geplanten Zielsystem eine Kommandozeile und ein Kommando existierern, mit dem man dort die Zeit einstellen kann. Wenn das beides gegeben ist, dann kannst Du das Beispiel entsprechend anpassen.

Falls es das beides nicht geben sollte (seeehr merkwürdig), dann gibt es vielleicht eine lib, die Du über JNI ansteuern kannst. Für weitere Details müsstest Du aber das Zielsystem benennen.


----------



## Nula (4. Apr 2012)

Die JavaApplication soll innerhalb einer JavaVM in einer Simotion (Steuerung von Siemens) laufen und die Systemzeit der Simotion ändern.

Aber was da für ein Betriebssystem drauf sein soll... das weiß kein Mensch. Mit Sicherheit nicht Windows etc., sondern wahrscheinlich eher 87234571836bg5d7a oder etwas in der Art... ;-)


----------



## irgendjemand (4. Apr 2012)

wenn überhaupt wird siemens wissen welche kranke abart von unix dadrauf läuft ...

vielleicht mal anderst gefragt : um die system-zeit auf diesem gerät einzustellen muss es ja eine gegebene möglichkeit geben ... warum also muss es unbedingt mit java sein ?

wenn z.b. die clock des systems jetzt nach der zeitumstellung ne stunde falsch geht ... dann fragt doch erstmal bei siemens nach wie man diesen fehler eigentlich behebt ... anstatt jetzt da wild was mit java versuchen zu wollen was so eh nicht geht

zum "ding" an sich selbst : irgendwie müsst ihr doch eure java-files die ihr da rauf ladet auch starten ... und das vermutlich über eine console *kann mir hier eine GUI ehrlich gesagt nicht vorstellen* ...
und über genau diese console wird man sicher auch mit unix-standard-befehlen die systemzeit setzen können ... *denn irgendwie müsst ihr diese ja auch aus lesen ... und wie ich unix kenne haben solche "system"-tools auch gleich immer was parat um den wert zu ändern


----------



## Nula (5. Apr 2012)

Die Java-Files werden gestartet, wenn die Steuerung Saft kriegt und laufen dann bis der Strom wieder weg ist. Eine andere Möglichkeit, die zu starten, gibt es nicht. Aber wie das dann "innen" ausguckt, weiß ich nicht. 

Und die Uhrzeit soll automatisch gesetzt werden, damit man sie eben nicht mehr manuell umstellen muss...


----------



## Kevin94 (5. Apr 2012)

Wenn auf dem Ding nur das Java-Programm läuft ohne OS, wie willst du dann eigentlich deinen Code auf das System bringen? Hat die Maschine sowas wie ein BIOS, CD-Laufwerk oder gar einen USB Anschluss?
Oder hattest du vor die Festplatte auszubauen und in deinen Rechner reinzustecken.
Hängt das Ding eigentlich irgenwie in einem Netzwerk, oder gar dem Internet, wenn du von automatischem Update redest, oder willst du dir einfach nur Sommer/Winterzeitumstellung abnehmen lassen?
Egal wie du das geplant hast, ist das imho eher ein Fall für den Siemens-Support und nicht für Programmieranfälle von frustrierten Nutzern.


----------

