JAXB JAR-файлы несовместимы с Java 1.6.0? - PullRequest
3 голосов
/ 19 февраля 2011

Я новичок в JAXB и хочу маршалировать и демаршалировать XML / Objects в Objects / XML.

У меня скачан JWSDP 2.0 с (стоит 22,69 МБ) Sun'ssite.

Я установил переменные окружения как

JAVA_HOME :-   D:\Program Files\Java\jdk1.5.0  
JWSDP_HOME :-   D:\Sun\jwsdp-2.0  
JAXB_HOME :- D:\Sun\jwsdp-2.0\jaxb  
PATH :- D:\Program Files\Java\jdk1.5.0\bin;D:\Sun\jwsdp-2.0\jwsdp-shared\bin;  

Я пытаюсь скомпилировать простой файл XSD (с именем tp.xsd), используя XJC (который присутствует в D:\Sun\jwsdp-2.0\jaxb\bin).

Я получаю следующий вывод при попытке его скомпилировать:

D: \ Sun \ jwsdp-2.0 \ jaxb \ bin> xjc tp.xsd

parsing a schema...  
compiling a schema...  
generated\Bookdata.java  
Exception in thread "main" java.lang.NoSuchMethodError: java.lang.Class.getSimpl
eName()Ljava/lang/String;  
        at com.sun.codemodel.JCodeModel$JReferencedClass.name(JCodeModel.java:54
5)  
        at com.sun.codemodel.JFormatter.t(JFormatter.java:283)  
        at com.sun.codemodel.JClass.generate(JClass.java:358)  
        at com.sun.codemodel.JFormatter.g(JFormatter.java:346)  
        at com.sun.codemodel.JAnnotationUse.generate(JAnnotationUse.java:388)  
        at com.sun.codemodel.JFormatter.g(JFormatter.java:346)  
        at com.sun.codemodel.JDefinedClass.declare(JDefinedClass.java:767)  
        at com.sun.codemodel.JFormatter.d(JFormatter.java:372)   
        at com.sun.codemodel.JFormatter.write(JFormatter.java:402)  
        at com.sun.codemodel.JPackage.build(JPackage.java:434)  
        at com.sun.codemodel.JCodeModel.build(JCodeModel.java:297)  
        at com.sun.codemodel.JCodeModel.build(JCodeModel.java:287)  
        at com.sun.tools.xjc.Driver.run(Driver.java:378)  
        at com.sun.tools.xjc.Driver.run(Driver.java:196)  
        at com.sun.tools.xjc.Driver._main(Driver.java:121)  
        at com.sun.tools.xjc.Driver.access$000(Driver.java:79)  
        at com.sun.tools.xjc.Driver$1.run(Driver.java:101)  

Можете ли вы помочь мне найти решение?Я знаю, что ошибка

Exception in thread "main" java.lang.NoSuchMethodError: java.lang.Class.getSimpl eName()Ljava/lang/String;   

возникает из-за несовместимости файлов компилятора и класса, но я не понимаю, что делать!

Когда я запускаю команду java -version, она показывает:

C:\Documents and Settings\welcome>java -version  
java version "1.6.0_23"  
Java(TM) SE Runtime Environment (build 1.6.0_23-b05)  
Java HotSpot(TM) Client VM (build 19.0-b09, mixed mode, sharing)  

Ответы [ 2 ]

5 голосов
/ 19 февраля 2011

Библиотеки jaxb включены в Java 1.6.Вы также получите все виды сумасшедших ошибок загрузчика классов, если добавите банку тоже.

В этом случае, похоже, что xjc выбрал неверную версию баночки.

edit

xjc должен быть включен в JDK, в вашем посте вы используете xjc, входящий в автономный пакет jabx.Перейдите в папку, где вы установили Java 1.6, проверьте, что у вас есть xjc.exe или xjc.bat и запустите его из этой папки.Как и Роберт, упомянутый выше, убедитесь, что вы используете Java 1.6

0 голосов
/ 28 октября 2014

Это дополнительный ответ к исходному сообщению.Вопрос в разделе комментариев был:

(Но моя система регулярно обновляла java, так почему она не загружала последние версии, которые есть в java 1.6, но не в java 1.5 ??? почему моя система говорилая использую Java 1.6, как показано в моем вопросе ??)

Когда вы набираете "java -version" в командной строке, Windows разрешает его, используя переменную среды PATH.Есть несколько мест, где можно найти файл java.exe .Очевидным является местоположение загруженной JRE (то есть C: \ Program Files (x86) \ Java [SOME JRE]).Другое, не столь очевидное, местоположение - папка System32 в Windows.Я также только что узнал, что на моей машине с Windows 8 есть ярлык java.exe в C: \ ProgramData \ Oracle \ Java \ javapath.Дело в том, что может быть много путей, где может находиться java.exe (или ярлык).Первая, найденная в PATH, побеждает.

Если вы хотите, чтобы конкретная версия Java использовалась для выполнения программ вне вашей среды разработки, вы должны поместить это местоположение в качестве первой записи в PATH (чтобы сделатьсначала он найдет это место).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...