4
respostas

Encoding e manipulação de Strings

Meu objetivo é tirar todos cedilhas e acentos de uma String para gerar um Path. Estou utilizando o seguinte algoritmo.

    // Tira caracteres especiais a afins
    // Por exemplo: 'maçã' vira 'maca'
   private static File geraPath(String path) {
        StringBuilder aux = new StringBuilder();
        String temp;
        for (String s : path.split(" ")) {
            aux.append(s.toLowerCase(new Locale("pt", "BR"))).append(File.separator);
        }
        temp = Normalizer.normalize(aux.toString(), Normalizer.Form.NFD)
            .replaceAll("[^\\p{ASCII}]", "");
        return new File(temp);
    }

Debugando funciona normalmente, no entanto, quando empacoto e gero o jar, a String 'Parametrização', transforma-se em 'parametrizaao', o que não acontece ao rodar o projeto pela IDE. Para gerar o jar estou utilizando o maven-assembly-plugin. POM.xml para packaging:


            <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                    <configuration>
                        <archive>
                            <manifest>
                                <mainClass>
                                    com.teknisa.App
                                </mainClass>
                            </manifest>
                        </archive>
                        <descriptorRefs>
                            <descriptorRef>jar-with-dependencies</descriptorRef>
                        </descriptorRefs>
                    </configuration>
                </execution>
            </executions>
        </plugin>

O que pode ser? Já tentei encoding da JVM com ' -Dfile.encoding=UTF8 ', ainda assim não funcionou.

4 respostas

Tenta gerar o JAR através do maven-jar-plugin:

<plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <configuration>
                  <!-- DO NOT include log4j.properties file in your Jar -->
                  <excludes>
                    <exclude>**/log4j.properties</exclude>
                  </excludes>
                  <archive>
                    <manifest>
                        <!-- Jar file entry point -->
                        <mainClass>com.seu.pacote.SuaClasseAqui</mainClass>
                    </manifest>
                  </archive>
                </configuration>
            </plugin>

Deu um problema por causa das dependências do meu projeto:

Exception in thread "main" java.lang.NoClassDefFoundError: org/json/JSONObject

Como adiciono minhas dependências necessárias ao jar dessa forma?

Opa, coloque essa dependência no seu pom.xml:

<dependency>
    <groupId>org.json</groupId>
    <artifactId>json</artifactId>
    <version>20190722</version>
</dependency>

Coloquei, ainda assim aquele erro persiste.