2013-08-12 10 views
6

sınıf dosyası (ler) olmadan nesneleri, ancak bu oluşturmak için tefrika edildi Sınıf erişimi yok nesneler. Sınıf dosyası olmadan, JVM, objectInputStreamInstance.readObject() ile nesneleri okumama izin vermez ve java.lang.ClassNotFoundException öğesini doğru bir şekilde atar.Ben (değer nesnelerdir) Java Serileştirilmiş nesneleri içeren bir ikili dosya var

XML veya diğer standardize formatta veri ayıklamak olacak yardımcı olabilecek bir kütüphane var? Aşağıdaki Kişi sınıfı seri ve dosyada saklanır ise Örneğin, ben ondan veri ayıklamak istiyorum:

Sınıf Tanımı

class Person implements Serializable { 
    int age; 
    String name; 
    public Person(int age, int name) { 
    this.age = age; 
    this.name = name; 
    } 
} 
sınıfına erişimi olmayan

Gerekli Ekstraksiyon Biçimi (

: dosya)

<Person> 
    <age>10</age> 
    <name>Name</name> 
</Person> 

şunlarla ama aradığımı alamadım kontrol ettikten

  1. Xstream (http://x-stream.github.io/) o nesnenin XML oluşturmak için bir Java nesnesine erişmesi gerekir. Ancak sınıf dosyası için nesne oluşturamıyorum.
  2. Serialysis

https://weblogs.java.net/blog/emcmanus/archive/2007/06/disassembling_s.html Yardımlarınız için teşekkür ederim çok eski gibi görünüyor.

Selamlar, Gursev

+0

Burada bazı iyi fikirler, çoğu yanıtın sınıf dosyasına gereksinim duymadığına benziyor: http://stackoverflow.com/questions/181448/gui-tool-to-browse-java-serialized-objects – lreeder

+0

@Ireeder Teşekkürler senin cevabın. Bu soruyu sormadan önce bu linki inceledim ve aradığım bir kütüphaneyi değil, bir ürünü/yazılımı işaret ediyor. –

cevap

5

kontrol jdeserialize. Bir komut satırı moduna sahiptir, fakat aynı zamanda a reasonably well documented API. XML'e otomatik olarak yeniden serileştirme konusunda mı? Ben öyle düşünmüyorum. Bunu yapmanın çok fazla yolu var. Muhtemelen 2 ayrı adımdan geçmeniz gerekecektir. jdeserialize, özellikle birçok XML serileştirme aracı tarafından gerekli olduğunda, sınıfların tersine mühendislik (kaynak java kodu üretilmesi) konusunda yardımcı olabilir. Orijinal sınıfları (javax.crypto.SealedObject ve/veya java.security.SignedObject nesneleri sarma gibi) kullanımı veri gizleme/şifreleme teknikleri (readObject veya benzerlerine geçersiz kılarak) varsayılan seri hale mekanizmasını kullanabilir veya did olmasaydı

Şimdi, o zaman başarı şansı azaldıkça azaldı.

+1

AFAIK, serileştirilmiş nesne alan adları, alan türleri ve diğer bilgiler hakkında ayrıntılar içerir. Kaynaklar: 1. http://www.javaworld.com/community/node/2915 2. http://docs.oracle.com/javase/6/docs/platform/serialization/spec/protocol.html –

+0

@GursevKalra Çok teşekkürler. Cevabımı tamamen değiştirdim. Üçüncü parti seri hale getirilmiş nesnelerle önceki deneyimlerim çok kötüydü. Varsayılan mekanizmanın ne kadar şeffaf olduğunu unuttuğum noktaya kadar. –

+0

Güncelleme için teşekkürler. jdeserialize umut verici görünüyor. Ek olasılıklar/taşlar olup olmadığını görmek için şu an soruyu açık tutacağım. –