Comment mettre en UTF-8 codage de caractères au Printemps de démarrage?
J'utilise spring-boot dans mon projet, et j'exécute ce fichier jar qui est construit par spring-boot en tant que service sur Centos. Lorsque j'exécute ce service:
service myApp commencer
J'ai toujours l'erreur ci-dessous les messages:
2016-08-26 09:11:02.002 ERROR 31900 --- [ main] o.s.b.c.FileEncodingApplicationListener : System property 'file.encoding' is currently 'ANSI_X3.4-1968'. It should be 'UTF-8' (as defined in 'spring.mandatoryFileEncoding').
2016-08-26 09:11:02.018 ERROR 31900 --- [ main] o.s.b.c.FileEncodingApplicationListener : Environment variable LANG is 'null'. You could use a locale setting that matches encoding='UTF-8'.
2016-08-26 09:11:02.018 ERROR 31900 --- [ main] o.s.b.c.FileEncodingApplicationListener : Environment variable LC_ALL is 'null'. You could use a locale setting that matches encoding='UTF-8'.
2016-08-26 09:11:02.031 ERROR 31900 --- [ main] o.s.boot.SpringApplication : Application startup failed
java.lang.IllegalStateException: The Java Virtual Machine has not been configured to use the desired default character encoding (UTF-8).
at org.springframework.boot.context.FileEncodingApplicationListener.onApplicationEvent(FileEncodingApplicationListener.java:74) ~[spring-boot-1.3.7.RELEASE.jar!/:1.3.7.RELEASE]
Si j'exécute ce fichier jar directement, alors cette application s'exécute correctement.
java-jar target/myApp-1.0.jar
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/_` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v1.3.7.RELEASE)
......
2016-08-26 09:54:34.954 DEBUG 32035 --- [ main] o.s.w.s.resource.ResourceUrlProvider : Found resource handler mapping: URL pattern="/**", locations=[ServletContext resource [/], class path resource [META-INF/resources/], class path resource [resources/], class path resource [static/], class path resource [public/]], resolvers=[org.springframework.web.servlet.resource.PathResourceResolver@1817d444]
2016-08-26 09:54:35.051 INFO 32035 --- [ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8000 (http)
2016-08-26 09:54:35.053 DEBUG 32035 --- [ main] o.s.w.c.s.StandardServletEnvironment : Adding [server.ports] PropertySource with highest search precedence
2016-08-26 09:54:35.061 INFO 32035 --- [ main] co.nz.myApplication : Started myApplication in 12.339 seconds (JVM running for 13.183)
C'est pom.xml:
<project>
....
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.3.7.RELEASE</version>
<relativePath/>
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.8</java.version>
</properties>
....
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<executable>true</executable>
<jvmArguments>-Dfile.encoding=UTF8 -Dspring.profiles.active="production"</jvmArguments>
</configuration>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>springloaded</artifactId>
<version>1.2.5.RELEASE</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
</project>
application.propriétés:
....
spring.mandatory-file-encoding=UTF-8
spring.http.encoding.charset=UTF-8
spring.http.encoding.enabled=true
....
paramètres régionaux sur Centos:
$ locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=en_US.UTF-8
Je vérifie tous les fichiers de configuration possible comme je le fais, mais j'ai toujours aucune idée de comment résoudre ce problème. Je vous serais reconnaissant si vous pouvez me donner une suggestion.
OriginalL'auteur Laurence | 2016-08-26
Vous devez vous connecter pour publier un commentaire.
SOLUTION
Ajouter au fichier de configuration (pour l'application
/var/app/app.jar
il sera/var/app/app.conf
) en dessous de la ligne:CAUSE
Le problème est dans linux
systemd
(service
). Je l'ai testé avec un script/etc/init.d/test
:résultat de la commande
$ /etc/init.d/test
:et le résultat de la commande
$ service test
:Au printemps de démarrage fichier jar est construire-dans systemd script et avant l'exécution de printemps de démarrage est exécutée entre autres:
OriginalL'auteur Krzysztof Szewczyk
J'ai enfin trouvé un moyen pour que je puisse lancer Printemps-amorçage de projet correctement.
La solution est d'utiliser
sudo /etc/init.d/myApp start
au lieu deservice myApp start
OriginalL'auteur Laurence
La première ligne indique que vous devez définir la propriété système de fichier.l'encodage'. Je pense que c'est le problème. Veuillez voir: Le réglage par défaut de Java codage de caractères?
OriginalL'auteur Dominik Koszkul
Basé sur ma réponse ici: https://stackoverflow.com/a/48952844/986160
vous devez exécuter:
OriginalL'auteur Michail Michailidis