FileChannel - NonWritableChannelException ?

Status
Nicht offen für weitere Antworten.

pocketom

Bekanntes Mitglied
Hi,

Eclipse schmeisst mir folgende Exception:

java.nio.channels.NonWritableChannelException
at gnu.java.nio.channels.FileChannelImpl.map(libgcj.so.7rh)


Code:
FileOutputStream fout = new FileOutputStream(file);
FileChannel fc = fout.getChannel();
MappedByteBuffer buf = fc.map(FileChannel.MapMode.READ_WRITE, 0, regfile.getFileHeader().getHeader_length());    // <- Problem ist in dieser Zeile

SuFu liefert leider nix zur NonWritableChannelException, googlen hats auch nicht gebracht... Wer kann helfen?
 

Wildcard

Top Contributor
Eigentlich sollte der Channel writeable sein, da er auf einem OutputStream basiert ???:L
Benutz SUN Java, der GNU Variante kann man oft nicht trauen.
 

pocketom

Bekanntes Mitglied
Wie stell ich jetzt noch auf SUN um? Meinst du nur nio oder soll ich mein ganzes Projekt umstellen?
 

Wildcard

Top Contributor
Ich würde GNU Classpath überhaupt nicht benutzen.
Welches System fährst du denn?
Welche IDE?
Je nachdem kann ich dir dann sagen (oder auch nicht) was du alles umstellen musst.
 

pocketom

Bekanntes Mitglied
IDE


Eclipse SDK

Version: 3.2.2
Build id: M20070212-1330




Das ganze läuft unter Fedora Linux (glaube Version 6).
installiert ist offenbar die GNU Version:

java version "1.4.2"
gij (GNU libgcj) version 4.1.1 20070105 (Red Hat 4.1.1-51)

 

Wildcard

Top Contributor
Zunächst mal musst du SUN Java installieren.
Dann fügst du die neue JRE in den Eclipse preferences hinzu und wählst sie als standard aus.
Ausserdem würde ich dir emfehlen die /etc/eclipse/java_home zu editieren und SUN Java an forderste Stelle zu setzen, denn das funktioniert wesentlich besser.
 

pocketom

Bekanntes Mitglied
Ok, wenn ich das mache, was passiert dann? Werde ich Fehler bekommen oder läuft mein Projekt auch mit SUN direkt? Sprich, wie problematisch ist die Operation? Werde ich Tage damit verbringen mein Projekt umzuschreiben oder ist das eher unkritisch?
 

Wildcard

Top Contributor
Umschreiben musst du nichts. GNU Classpath möchte kompatibel zu SUN Java sein, aber sie haben noch zu viele Probleme an zu vielen Ecken.
Was mit Classpath funktioniert, funktioniert auch mit SUN (Wenn nicht gerade Classpath bugs ausgenutzt wurden), anders herum ist das öfter mal nicht der Fall.
 

pocketom

Bekanntes Mitglied
Ah ok, vielen Dank, das hört sich gut an. Dann probier ich das mal morgen. Problem ist leider dass der Admin in unserer Firma einfach nichts auf die Reihe kriegt (ich habe auf der Kiste an der ich arbeite leider keine root-Rechte). Soweit ich weiss kann ich das aber trotzdem nutzen indem ich das SUN JDK einfach in den entsprechenden Unterordner meines Eclipse kopiere oder? Bis der Typ mal zu Potte kommt sind mir nämlich graue Haare gewachsen....
 

pocketom

Bekanntes Mitglied
Welche Version würdest du empfehlen, die neueste 6u1 (jdk-6u1-linux-i586.bin)? Ich hab ja noch das uralte 1.4.2 drauf, denk mal das ist ja sicher auch nicht optimal...?
 
G

Guest

Gast
pocketom hat gesagt.:
Welche Version würdest du empfehlen, die neueste 6u1 (jdk-6u1-linux-i586.bin)? Ich hab ja noch das uralte 1.4.2 drauf, denk mal das ist ja sicher auch nicht optimal...?

Kommt drauf an, ob du nen Grund hast noch 1.4.2 zu nutzen.

Ansonsten schadet es sicher nicht, wenn du gleich auf 6u1 umsteigst! :D
 

pocketom

Bekanntes Mitglied
Der einzige Grund war das das System hier ziemlich veraltet ist. Ich soll entwickeln, habe aber keine root-Rechte auf der Kiste. Habe mittlerweile durchgesetzt das ich einen eigenen Entwicklungsrechner mit root-Rechten (ohne Internet, was für ein Schwachsinn) bekomme. Der supertolle "Systemadministrator" ist nicht ganz knusper hier. Der kann mal einfach garnix. Hat nicht mal ne Informatikausbildung :autsch:
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben