Имам проблем, подобен на (Грешка при компилиране на Java файл със специални знаци в името на клас)
сценарият е следният: използвам jenkins за изграждане на проект, който използва xmlbeans-maven-plugin:2.3.3 за генериране и компилиране на java класове от xsd. Моят xsd файл има някои типове със специални знаци в името, като това:
<?xml version="1.0" encoding="ISO-8859-1"?
...
<xs:complexType name="tipoAttività">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="Cod" type="xs:string"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
когато изграждам на моята локална Windows7 машина, всичко е наред, когато се ангажирам на svn и изграждам на jenkins (на linux машина - ubuntu12.04), или ако се опитам да изграждам на развойна unix машина, получавам грешката:
class TipoAttivit?Impl is public, should be declared in a file named TipoAttivit?Impl.java
Опитах се да компилирам ръчно, предавайки опцията -enconding на компилатора, с този резултат:
$ javac -encoding ISO-8859-1 TipoAttivit\?Impl.java
TipoAttivit?Impl.java:14: error: class TipoAttivitàImpl is public, should be declared in a file named TipoAttivitàImpl.java
public class TipoAttivit\u00e0Impl extends org.apache.xmlbeans.impl.values.JavaStringHolderEx implements it.honyvem.hvtola.hv2La.TipoAttivit\u00e0
Моля, обърнете внимание, че компилаторът отпечатва името на файла с въпросителния знак И отпечатва правилно името на класа със знака "à".
Опитах се да посоча ISO-8859-1 кодиране навсякъде, но не мога да се отърва от грешката. Подозирам, че проблемът е в начина, по който приставката xmlbeans генерира изходните файлове, но не намерих опции за указване на кодирането.
Ето го моят пом:
<properties>
<project.build.sourceEncoding>ISO-8859-1</project.build.sourceEncoding>
</properties>
<build>
<finalName>xsd_honyvem_common</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
<encoding>ISO-8859-1</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.6</version>
<configuration>
<encoding>ISO-8859-1</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>xmlbeans-maven-plugin</artifactId>
<version>2.3.3</version>
<inherited>true</inherited>
<executions>
<execution>
<goals>
<goal>xmlbeans</goal>
</goals>
<phase>generate-sources</phase>
<configuration>
<schemaDirectory>src/main/resources/xsd</schemaDirectory>
<memoryInitialSize>32m</memoryInitialSize>
<memoryMaximumSize>64m</memoryMaximumSize>
<verbose>true</verbose>
<xmlConfigs>
<xmlConfig implementation="java.io.File">
src/main/resources/xsd/common.xsdconfig
</xmlConfig>
</xmlConfigs>
<noJavac>true</noJavac>
</configuration>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.apache.xmlbeans</groupId>
<artifactId>xmlbeans</artifactId>
<version>2.2.0</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.apache.xmlbeans</groupId>
<artifactId>xmlbeans</artifactId>
<version>2.2.0</version>
</dependency>
</dependencies>
може ли някой да ми помогне
РЕДАКТИРАНЕ: Ако ръчно променя името на файла по следния начин:
$ mv TipoAttivit\?Impl.java TipoAttivitàImpl.java
Компилаторът изглежда работи добре:
$ javac -encoding ISO-8859-1 TipoAttivitàImpl.java
TipoAttivitàImpl.java:14: error: package org.apache.xmlbeans.impl.values does not exist
TipoAttivitàImpl.java:14: грешка: пакет org.apache.xmlbeans.impl.values не съществува Така че определено проблемът е в начина, по който xmlbeans генерира изходните файлове.