Apache: jar-Datei Download als jar und nicht als zip

Blackhole16

Bekanntes Mitglied
Ich weiß nicht, ob dies ein Problem ist, welches wirklich ins java-forum gehört, denke aber, dass ich bestimmt nicht der einzige bin (oder sein werde), den es beschäftigt.
Falls dies der Falsche Unterordner ist bitte ich es zu verschieben.

Ich habe einen Apache-server auf meinem Computer, über den ich gerne einige meiner *.jars als Download anbieten möchte. Leider weiß ich aber nicht genau wie ich das machen, denn wenn ich es mit diesen Varianten mache, wird es immer nur als ZIP heruntergeladen und abgespeichert, nciht als JAR.
Code:
<a href="MeineJar.jar">
<a href="MeineJar.jar" type="applications/java-archive">
<a href="MeineJar.jar" type="applications/x-jar" *(oder so ähnlich)*>

Nun habe ich es vorübergehend erst einmal so gemacht, dass ich es in eine ZIP packe und die "user" (noch genau 0 ;( ) es dann entpacken müssen.

Ich habe aber auf ganz vielen seiten gesehen, dass es als JAR abgespeichert wird, was ich auch gerne erreichen würde.

Falls es wichtig ist: Ic herstelle die "Runnable jar files" mit eclipse und benutze Opera als Browser.

Vielen Dank schon im Voraus für eure Hilfe,

mfg
BH16
 
Zeigt er dir vielleicht einfach nur "Zip Archiv" an? Wenn du die Datei als .jar Datei speicherst solltest du die eigentlich auch so starten können.
 
es ist nicht das starten.

Ich habe im Apache-ordner die Seite download.html und die JAR MeineJar.jar. Nun habe ich in der Seite download.html mit den o.g. varianten eingebunden und versucht herunterzuladen. Aber er speichert es halt nicht als jar und zeigt auch den download (das Fenster mit öffnen, speichern, abbrechen) nur als zip an. Ich kann es also nicht einmal als jar herunterladen. Wenn ich es dann umbenenne von MeineJar.zip in MeineJar.jar geht auch alles.

Irgendwie total komisch...

mfg
BH16
 
Ich habe es jetzt eine Lösung über javascript:

Code:
<a href="" onclick="location.href='MeineJar.jar';return false;">Download</a>

mfg
BH16
 
Es gibt drei Möglichkeiten :

1) Dein Server ist falsch konfiguriert
Bei einer normalen Apache-Installation wird ein File namens "mime.types" angelegt in dem alle gängigen Formate und deren Header hinterlegt sind. Für Java sind dies folgende :
Code:
application/x-jar jar
application/x-java class
application/x-java-archive jar ear war
application/x-java-jnlp-file jnlp
Prüfe ob diese bei dir so auch korrekt drin stehen.
Auch kann es sein das der Server selber noch mal den Datentypen prüft. Dabei kann es natürlich auch zu Fehlern kommen und somit wird dem Client ein falscher Header mit falschem File-Name gesendet. Wo genau das allerdings bei Apache zu finden ist weis ich auch nicht.

2) Dein Browser hat Probleme den Header bzw das Format an der Dateinamenerweiterung zu erkennen
Es kann vorkommen das die Browser-interne Prüfung "kaputt" ist oder durch einen Bug "failsafe" mäßig zum OS durchgereicht wird. Hier solltest du einfach mal alle anderen auf dem System installierten Browser testen. Gibt es nur bei einem das Problem ist dieser mit ziemlicher Sicherheit "kaputt". Tritt der Fehler auch bei anderen Browsern auf gibt es vermutlich Probleme im OS.

3) Die OS-Registry ist beschädigt bzw enthält falsche Werte
Auch ganz gerne kommt es mal dazu das in der Registry (und ja : Unix hat etwas ähnliches) die Verknüpfung von File-Header, Dateinamenerweiterung, Typ sowie wenn vorhanden ausführendem Binary fehlerhaft sind. Dies geschiet vor allem wenn verschiedene Programme installiert werden die den selben "Datentyp" verarbeiten können. In der Regel wird dann nur das zuletzt installierte Programm mit dem Typ verknüpft. Bestes Beispiel : Setup von WinRAR NACH Setup von Java. Falls man es nicht richtig einstellt wird JAR dann mit WinRAR anstatt mit Java verknüpft. Es kann sein das bei dir etwas ähnliches passiert ist.

Die Chancen stehen 50/50 sowohl für Server- als auch für Client-Fehler. Zum Testen bliebt dir nichts anderes übrig als das selbe File auf unterschiedliche Server zu kopieren und mit unterschiedlichen Systemen runterzuladen. Irgendwo wird sich die Fehlerursache dann zu erkennen geben.

Die Lösung mit JavaScript halte ich dagegen für sehr "dreckig" da bei deaktiviertem JS überhaupt nichts funktioniert. Da ist es besser wenn der User ein File runterläd was er umbennen / aus einem anderen Container entpacken muss als Usern mit anderen Browser-Einstellungen der Download komplett zu verwehren.
 

Zurück
Oben