Ok, esto es un problema raro: Tengo un archivo de prueba de Java que utiliza algunos caracteres UTF-8. Cuando compilo con Maven, utilizandoMVN compilar no usar codificación UTF-8
mvn -Dfile.encoding=UTF-8 -Dproject.build.sourceEncoding=UTF-8 test
(estableciendo así tanto la codificación plataforma percibida y la codificación del archivo fuente, consulte maven platform encoding) me sale algo así como
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Building project
[INFO] task-segment: [test]
[INFO] ------------------------------------------------------------------------
[INFO] [resources:resources {execution: default-resources}]
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory path/src/main/resources
[INFO] [compiler:compile {execution: default-compile}]
[INFO] Nothing to compile - all classes are up to date
[INFO] [resources:testResources {execution: default-testResources}]
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory path/src/test/resources
[INFO] [compiler:testCompile {execution: default-testCompile}]
[INFO] Compiling 7 source files to path/target/test-classes
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Compilation failure
path/to/file.java:[42,23] unclosed character literal
path/to/file.java:[42,25] ';' expected
path/to/file.java:[42,26] unclosed character literal
path/to/file.java:[47,23] unclosed character literal
path/to/file.java:[47,25] illegal character: \182
path/to/file.java:[47,26] unclosed character literal
cuando compilo el archivo con
javac path/to/file.java
tengo errores similares:
path/to/file.java:42: unclosed character literal
illegalCharEnc('ä');
^
path/to/file.java:42: ';' expected
illegalCharEnc('ä');
^
path/to/file.java:42: unclosed character literal
illegalCharEnc('ä');
^
path/to/file.java:47: unclosed character literal
illegalCharDec('ö');
^
path/to/file.java:47: illegal character: \182
illegalCharDec('ö');
^
path/to/file.java:47: unclosed character literal
illegalCharDec('ö');
^
6 errors
Ahora cuando uso
javac -encoding UTF-8 path/to/file.java
lugar, consigo cannot find symbol
errores, debido a las dependencias que faltan. Por lo que figura el problema es que no se llama javac
con UTF-8 opción de Maven al compilar pruebas (observe como Using 'UTF-8' encoding to copy filtered resources.
no se encuentra en compiler:testCompile
-section). ¿Es esta conclusión correcta? ¿Me estoy perdiendo de algo? ¿Es este un problema conocido? ¿Hay algo que pueda hacer al respecto? Obviamente, la codificación de la plataforma en mi sistema no es UTF-8, pero actualmente no puedo cambiar eso.
Al establecer la codificación predeterminada de la plataforma en UTF-8, se solucionó el problema. Supongo que esto es un error en Maven. – roesslerj
¿Qué versión del compilador-complemento usa? ¿Ha definido el project.build.SourceEnconding en su pom (parece que no lo hizo) – khmarbaise
La versión del compilador-complemento no está especificada en el pom, Maven es la versión "2.2.1 (rdebian-4)". Traté de especificar la propiedad 'project.build.SourceEnconding' en el pom, no cambié nada. Y esto debería ser lo mismo que dar '-Dproject.build.sourceEncoding =' en la línea de comando de todos modos. – roesslerj