In dem einem (nicht von mir) wird jdom als lib genutzt.
Ich selber (in meinem Projekt) benötige jetzt ebenfalls diese jdom lib (für rss) aber in der Version 1.0.
Nun entsteht aber ein konflik zwischen den beiden Versionen.
Rechtsklick auf das Projekt -> Properties -> Java Build Path -> Lib hinzufügen sollte funktionieren, hab bei mir auch Java 1.5 und java 1.6 Programme laufen
also diese diskusion halte ich für kompletten schwachsinn
"ich habe Java5.0 und Java6 apps laufen" ...
du weist schon das man ALLE class-Files einer älteren VM auch mit der aktuellen version ausführen kann oder ? die einzige beschränkung ist umgekehrt : du kannst keine class-Files ausführen welche mit einer höheren VM compiled wurden ...
heißt : du solltest deine apps auch mit J7 ausführen können *falls nicht liegt es am code selbst und dafür sollte man den entwickler schlagen ...*
bei libs ist das ganze etwas ... sagen wir mal : willkürlicher ...
in der regel erweitert man lediglich und makiert nicht mehr verwendete dinge als obsolet / deprecated ... dementsprechend solltest du mit einer neueren version einer lib auch alles das tun können was mit der alten möglich war ... ansonsten gilt das selbe wie bei den vm-versionen : man sollte entwickler dafür schlagen wenn eine lib oder eine ganze app nach OBEN hin begrenzt wird *also solche lustigen hinweise wie : maximal Java5.0 ... oder max. Lib v3.x ... dann hat jemand ziemlich gepennt was das grundkonzept von Java angeht*
Es ist aber nunmal so, dass wir zum Teil probleme mit unseren Kunden haben, die sehen es nicht ein, dass man Java vielleicht mal updaten sollte, somit müssen wir für extern Code in Java 1.5 entwickeln und für intern Java 1.6 (wahrscheinlich noch bis zum Frühjahr, dann sollen die auf Java 1.7 umgestellt werden...
Also, entschuldigung wenn das beileidigend oder so rüber kommen sollte, sei also vorsichtig mit solchen Aussagen.
Das mit der Java Version funktioniert ja auch wunderbar (ist ja Java).
Habe nur Probleme mit dem jdom (Packet org.jdom).
In dem einem Projekt ist jdom < 1.0 vorhanden in meinem Projekt aber jdom 1.0.
Jetzt findet er natürlich die Methoden nicht, welche herausgefolgen sind (auch kein obsolet / deprecated) vorhanden (leider, da habe ich mich auch schon gewundert).
Nun suche ich eine Möglichkeit das erste Projekt mit der alten laufen zu lassen und meines mit der neuen version. Ich suche einen Weg dem einen Projekt zu sagen hier findest du die jdom.jar und meinem Projekt möchte ich sagen hier findest du die jdom1.0.jar.
Geht nicht. Da bräuchtest du zwei gleichzeitig laufende JVM's mit unterschiedlichen Classpaths, die dann z.B. über RMI kommunizieren. Du kannst ja nicht zwei mal die selbe Klasse laden. Pro JVM existiert immer nur eine geladene Version einer Klasse. Also wenn du keine Klasse nutzt die in der anderen Version benutzt wird könnte es mit URLClassLoader gehen, aber das wird wohl kaum der Fall sein.
was geht, hol dir den sourcode von deiner jdom, und benenne das package um, zb in *.jdomneu.*
Dann kannste das lösen indem du explizit nur Klassen aus dem neuen package bei dir importierst.
Bei übergaben musste dir dann nen Converter zwischenkleben, der die neue in alte übersetzt um umgedreht an der Schnittstelle.
nun ... da der offizielle support von Java5.0 bereits eingestellt wurde würde ich mich einfach weigern damit noch überhaupt zu arbeiten ...
wenn der kunde sich stur stellt und nicht updaten will sollte man ihn mal über die risiken der alten und die vorteile der neuen version aufklären ... aber einige begreifen sowas ja nicht .... argumentieren mit einem angeblich unüberschaubaren aufwand und in den IT-abteilungen gäbe es eh ganz andere , viel wichtigere dinge zu tun ... wobei gerade solche software-updates einen hohen stellenwert haben sollten ... und verbreiten dann über einen ein schlechtes image nur weil man lieber mit aktuellen versionen arbeitet und aus bestimmten gründen die arbeit mit einer solch obsoleten version eingestellt hat ...
aber naja ... der westen nennt sowas ja "freie" marktwirtschaft ... *wer es glaubt ... pff*
das ganze war ja noch nicht mal gegen euch persönlich gerichtet ... aber ich kann es einfach nicht verstehen ...
zu den libs : tja ... wenn der dev der lib so lustig war und entgegen der java-konventionen einfach obsolete klassen , methoden oder objekte löscht ... anstatt diese richtigerweise als deprecated zu makieren und für ordentlichen ersatz zu sorgen ... dann wäre es für mich ein grund die lib zu wechseln ...
wer weis ... vielleicht kommt ja mal eine version mit der dann keines deiner beiden projekte mehr funktioniert ... ziemlich umständlich und ganz sicher nicht im sinne der annotation DEPRECATED
da deine frage also so spezifisch auf eine lib bezogen ist solltest du dich lieber beim dev melden das er die konventionen mal ordentlich auf die reihe bekommt anstatt hier nach nem *meiner meinung nach* ziemlich finsteren hack zu fragen ...
klar ist es erstmal das einfachste was du tun kannst ... so lange du zugriff auf den source hast ... aber dann könntest du auch genau so gut beide versionen mergen so das du EINE lib für BEIDE projekte verwenden kannst ...
ggf solltest du auch in erwägung ziehen das projekt welches die alte version benötigt so umzuschreiben das es mit der neuen version arbeitet *wobei eigentlich nichts der gleich nötig sein sollte wenn wie gesagt der dev der lib anständig nach den java-konventionen arbeiten würde* ...
Es geht doch erst einmal um Eclipse?
Wenn ich das richtig verstanden habe existieren zu den zwei Anwendungen zwei getrennte Eclipse Projekte.
Zu jedem Eclipse Projekt kann man unabhängig von anderen Projekten im Build Path die zu referenzierenden externen libs festlegen. Somit kann man in den einen Projekt libA1.jar und im anderen Projekt libA2.jar referenzieren, ohne dass es Auswirkungen auf das jeweils andere Projekt hat.
Also so wie Gossi bereits im ersten Post beschrieben hat.
nun ... da der offizielle support von Java5.0 bereits eingestellt wurde würde ich mich einfach weigern damit noch überhaupt zu arbeiten ...
wenn der kunde sich stur stellt und nicht updaten will sollte man ihn mal über die risiken der alten und die vorteile der neuen version aufklären ... aber einige begreifen sowas ja nicht ...
wenn der dev der lib so lustig war und entgegen der java-konventionen einfach obsolete klassen , methoden oder objekte löscht ... ... ziemlich umständlich und ganz sicher nicht im sinne der annotation DEPRECATED
"Although deprecated features remain in the software, their use may raise warning messages recommending alternative practices, and deprecation may indicate that the feature will be removed in the future."
Es ist also nicht zwingend notwendig einmal eingeführte Methoden "für immer" in der Codebase mitzuschleifen auch wenn sie längst nicht mehr benutzt werden sollen.
Ebenfalls ist es ja gut möglich, dass die Version 0.9 eine gewisse Methode implementiert, die etwas ganz spezielles macht. Und nun haben sich die Entwickler eben eine neue Art überlegt, dies zu lösen. Nur das diese neue Art in der Version 1.0 nicht mehr verwendbar ist in diesem speziellen Fall. Aus diesem Grund kann nur die lib bis Version 0.9 benutzt werden weil ein Umstieg auf 1.0 einen erheblichen mehraufwand bedeuten würde, nur um das Programm wieder lauffähig zu bekommen. Und wenn die neue Version keinerlei zwingend notwendige Bug- oder Security Fixes beinhaltet und noch dazu keine nennenswerten neuen Features mitbringt, ist es nur logisch wenn man auch weiterhin mit der Version 0.9 arbeitet.
Also bei uns wird nicht auf alle 3rd Party Projekte geschielt ob sie mit einer neuen Version rausgekommen sind nur um die dann unbedingt auch in unseren Projekten einzusetzen. Wenn es ein Security Problem gibt und man besser die neueste Version nebst Patch nutzen sollte, so teilt man uns das mit und dann wird evaluiert in wie fern ein upgrade möglich ist. Aber pro forma upgraden nur des upgrades Willen ist da nicht drin.
hmm ... dann würde ich genau den zur verantwortung ziehen der daran schuld ist das da überhaupt Java5.0 verwendet wird ... was ja sicherlich dann doch irgendeine zentrale *oder zumindest regionale* stelle sein sollte die unter der aufsicht irgendeines konzernes oder sonstiger kontroll-instanz steht ...
anderst wäre es nicht erklärbar das du schlappe 5000 kunden hast die zufällig ... aber auch nur rein zufällig die selbe uralte java-version verwenden *plus/minus ein oder zwei updates* ...
nun ... da der offizielle support von Java5.0 bereits eingestellt wurde würde ich mich einfach weigern damit noch überhaupt zu arbeiten ...
wenn der kunde sich stur stellt und nicht updaten will sollte man ihn mal über die risiken der alten und die vorteile der neuen version aufklären ... aber einige begreifen sowas ja nicht ....
Das kann man mit manchen Kunden vielleicht diskutieren. Bei uns (ca. 100.000 Mitarbeiter) läuft auf ca. 80% der Rechner nur Java 1.5 und im letzten Jahr lief auf vielen Rechner nur Java 1.4 oder 1.3. Den Software Entwickler möchte ich sehen, der mir bei dem Auftragsvolumen vorschreiben will Java 1.6 zu nutzen ;-) ... ich bin auch nicht unbedingt begeistert, aber so ist die Realität.
Aber welche Java Versionen genutzt werden sollte, war ja nicht unbedingt Thema dieses Threads.
aber meinst du nicht das wenn du ein major-verison-update von 0.9 auf 1.0 hast das alleine schon aussagt das ein erheblicher teil der lib geändert wurde ?
klar sagt deprecated nicht das man jetzt einen code einer frühen alpha oder beta auch noch in der 5. final mitschleppen muss ... aber man sollte es zumindest rechtzeitig erwähnen ...
es ist ja noch nicht mal allein um des updates willen ... aber entweder passt man *wenn möglich* die apps so an dass diese mit mehreren verschiedenen lib-versionen laufen oder die lib so das sie für alle verwendeten apps einsetzbar ... aber für verschiedene apps die selbe lib in unterschiedlichen versionen ... das würde mir zu weit gehen ...
hmm ... dann würde ich genau den zur verantwortung ziehen der daran schuld ist das da überhaupt Java5.0 verwendet wird ... was ja sicherlich dann doch irgendeine zentrale *oder zumindest regionale* stelle sein sollte die unter der aufsicht irgendeines konzernes oder sonstiger kontroll-instanz steht ...
Nein, aber viele sehen es halt so:
Mein Rechner läuft und ich bin (das ist unser Problem) Teilinhaber meines Dienstleisters, also soll er gefälligst seine Programme so schreiben, dass ich sie benutzen kann.
Kleine Anmerkung dazu:
Der Gesellschafter unserer Firma ist ein Apothekenverein, die Mitglieder dieses Vereins sind allerdings unsere Kunden, also dürfen uns unsere Kunden rein theoretisch alles vorschreiben was wir tun sollen, bzw. wie.