いいえ、 jar 内から一部のパッケージを「オーバーライド」するために使用することは絶対にできません。ClassLoader.definePackage
私の理解が正しければ、JVM に javax.xml.bind の下の任意のクラスを def.jar からロードさせ、他のすべてのクラスを abc.jar からロードさせる必要があります。この場合、次のことができます(私の個人的な好みの順序で):
1) CLASSPATH の abc.jar の前に def.jar を置きます。これには、abc.jar からロードするクラスが def.jar に存在しないことが必要です。
2) def.jar、abc.jar、またはその両方を解凍し、競合するクラスをすべて削除して、CLASSPATH で最初に来る jar が実際には無関係になるようにします。次に、それらを再圧縮します。または、これを 1 つの jar でのみ実行し、他の jar の前に配置することもできます。
3) 構成可能なクラスローダーを使用します (申し訳ありませんが、私が知っているパブリック ドメインのものはありません。見つけたらお知らせください)。これは、OS プロジェクトにとって興味深いトピックになる可能性があります。ただし、類似の (しかしより広範な) 目的を持ついくつかのイニシアチブが既に進行中であり、その一部は言語の中核にあります。
4) この目的のためにクラスローダーを作成し、おそらくデフォルトのものを拡張します。