JAXB XJC Кодирование UTF -8 -> Проблема UnicodeJAVA

Программисты JAVA общаются здесь
Anonymous
JAXB XJC Кодирование UTF -8 -> Проблема Unicode

Сообщение Anonymous »

У меня есть приложение Java 17, настроенное с Gradle, для файлов unmarshall в классы Java через схему .xsd, которая содержит символы UTF-8, в частности, российские символы. Он не смог генерировать классы с оригинальными именами UTF-8, но я нашел способ заставить кодирование во время поколения, это позволило мне просто увидеть мои занятия и собрать приложение. Но во время выполнения я узнал, что настоящая проблема - это символы Unicode в аннотациях Jaxb, такие как @xmlelement, это делает весь процесс Unmarhalling невозможным. В приложении говорится, что файл неверен, начиная с первого символа. Пример генерирования: < /p>

Код: Выделить всё

@XmlElement(name = "\u041e\u0442\u043a\u0440\u044b\u0442\u0438\u0435\u0421\u0447\u0435\u0442\u043e\u0432")
protected ОткрытиеСчетов открытиеСчетов;
< /code>
Имя в пунктах, которое должно быть, должно быть ".configurations {
jaxb
}
dependencies {
implementation("org.glassfish.jaxb:jaxb-runtime:4.0.2")
implementation("jakarta.xml.bind:jakarta.xml.bind-api:4.0.2")

jaxb "com.sun.xml.bind:jaxb-xjc:4.0.2"
jaxb "org.glassfish.jaxb:jaxb-runtime:4.0.2"
jaxb "jakarta.xml.bind:jakarta.xml.bind-api:4.0.2"
}

tasks.register('xjcGenerate') {

def generatedSourcesDir = file("$buildDir/generated/sources/xjc")
outputs.dir generatedSourcesDir

doLast {
ant.taskdef(
name: 'xjc',
classname: 'com.sun.tools.xjc.XJCTask',
classpath: configurations.jaxb.asPath
)

ant.xjc(
destdir: generatedSourcesDir,
package: 'com.example.generated'
) {
schema(dir: 'src/main/resources/xsd', includes: '*.xsd')
arg(value: "-encoding")
arg(value: "UTF-8")
}
}
}

compileJava.dependsOn xjcGenerate

compileJava.options.encoding = 'UTF-8'
< /code>
Пример .xsd Элемент, используемый для генерации:  < /code>
Фактическая ошибка во время Unmarshalling IS < /p>
jakarta.xml.bind.UnmarshalException
- with linked exception:
[org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; Content is not allowed in prolog.
upd: после исправлений в build.gradle, проблема была в кодировании XML, в соответствии с этим ответом, UTF-8 и UTF-8-BOM не одинаковы, изменение кодирования файла на UTF-8 помог!>

Подробнее здесь: https://stackoverflow.com/questions/796 ... de-problem

Вернуться в «JAVA»