kostenloser Webspace werbefrei: lima-city


Buffered image als Remote Parameter

lima-cityForumProgrammiersprachenJava

  1. Autor dieses Themas

    nie-genug-gewuerzt

    nie-genug-gewuerzt hat kostenlosen Webspace.

    Hallo,
    ich versuche eine Remoteverbindung mit Java zu schreiben, bei der der Bildschirm des Gegenübers an den Anfordernden gesendet wird.
    Den Schreenshot bekomme ich auch schön und möchte ihn nun als Buffered Image an den Server senden. Leider tritt hierbei immer ein Probem auf.
    Weiß jemand, ob es vielleicht nicht möglich ist eine Methode auf dem Server auf zu rufen und als Parameter ein Buffered Image zu übergeben? Wenn ja, wie könnte ich das Problem lösen?

    Hier der Fehler:
    java.rmi.MarshalException: error marshalling arguments; nested exception is:
            java.io.NotSerializableException: java.awt.image.BufferedImage
            at Server_Stub.speicherScreen(Unknown Source)
            at ClientScreenControl.macheScreen(ClientScreenControl.java:30)
            at Client.run(Client.java:235)
            at java.lang.Thread.run(Thread.java:619)
    Caused by: java.io.NotSerializableException: java.awt.image.BufferedImage
            at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1156)
    
            at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326)
            ... 4 more
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Du musst eine Kindklasse schreiben, die Serializable erbt und deren Methoden überschreiben. Andernfalls musst du eine Extraklasse schreiben, die BufferedImage Objekte zu einem seriellen Stream oder Ähnlichem verarbeitet. Eine Alternative fällt mir da nicht ein.
  4. NotSerializableException

    Sagt alles, oder nicht? Die Pipeline die du benutzt um Dinge über das Internet zu versenden verlangt, dass die genutzten Objekte Serializable sind.

    Das wiederum erfordert allerdings auch, dass alle Member serializable sind.
    Ich persönlich würde eine Klasse "SerializableBImage" oder ähnliches schreiben, die im Konstruktor ein BufferedImage erwartet. Dieses wird dann als ByteArray gespeichert. SerializableBImage muss dazu natürlich noch Serializable implementieren.

    Diese Klasse bentuzt du dann um Bilder übers Netz zu schicken.


    Edit:
    Mhm. oO
    Wieso habe ich denn die Meldung nicht erhalten, dass da schon jemand gepostet hat? :D

    Beitrag zuletzt geändert: 1.6.2012 17:53:56 von adrians
  5. Autor dieses Themas

    nie-genug-gewuerzt

    nie-genug-gewuerzt hat kostenlosen Webspace.

    Vielen Dank!
    Eure Stichpunkte haben mir sehr geholfen. Vor allem der Punkt mit dem ByteArray
    adrians schrieb:
    Dieses wird dann als ByteArray
    Ich bin leider noch nicht so gut, als das ich mit Serializable etwas anfangen könnte. Doch mit dem Array funktioniert nun alles, vieln Dank
  6. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!