# FileChannel - NonWritableChannelException ?



## pocketom (21. Jun 2007)

Hi,

Eclipse schmeisst mir folgende Exception:

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


```
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 (21. Jun 2007)

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 (21. Jun 2007)

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


----------



## Wildcard (21. Jun 2007)

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 (21. Jun 2007)

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 (21. Jun 2007)

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 (21. Jun 2007)

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 (21. Jun 2007)

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 (21. Jun 2007)

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....


----------



## Wildcard (21. Jun 2007)

Ja, zumindest von Eclipse aus kannst du dann das SUN JRE verwenden.


----------



## pocketom (22. Jun 2007)

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...?


----------



## Guest (22. Jun 2007)

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!


----------



## pocketom (22. Jun 2007)

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:


----------

