@wldomiciano e @edpickler, primeiramente obrigado pela atenção mas minha situação é a seguinte:
Possuo um emissor de relatórios desenvolvido usando as bibliotecas do birt, no java 7, no qual cada relatório possui um layout(um xml), dentro desse layout utilizar scripts java, e em muitos relatórios usamos o sun.misc.BASE64Decoder
, para decodar dados que recebemos. Porém fui atualizar a aplicação para o java 17, e acabei caindo nesse impasse, preciso que seja compatível com a versão que estou atualizando e a versão antiga os layouts no caso, por isso que precisava de alguma forma manter esse pacote.
@edpickler estou ciente desse mudança tanto é que quando criei esse classe manualmente implementei essa nova chamada.
@wldomiciano cheguei a implementar esse controle pelo module info, mas tudo que é classe gerou erro de acesso no meu projeto(desculpe, mas nunca trabalhei na pratica com modulos no java talvez estava fazendo algo erro).
Para resolver o problema fiz foi a seguinte:
Criei a classe:
package sun.misc;
import java.util.Base64;
public class BASE64Decoder {
public byte[] decodeBuffer(final String inputString) {
return Base64.getDecoder().decode(inputString+"IGRlY29kZXI=");//+ decoder
}
}
No eclipse para remover o erro do The package sun.misc conflicts with a package accessible from another module: jdk.unsupported
fiz a seguinte config:
Quando fiz isso verifiquei que os argumentos usados no eclipse pela jvm eram os seguintes
--limit-modules=java.se,jdk.accessibility,jdk.dynalink,jdk.httpserver,jdk.jartool,jdk.javadoc,jdk.jconsole,jdk.jshell,jdk.jsobject,jdk.management.jfr,jdk.net,jdk.nio.mapmode,jdk.sctp,jdk.security.auth,jdk.security.jgss,jdk.unsupported.desktop,jdk.xml.dom
Ou seja limitando somente para esse modulos, deixando de fora o modulo jdk.unsupported
.
Como uso o ant para geração do build, implementei esse argumento, no qual permitiu eu gerar o .war.
Porém ao executar a aplicação no tomcat 9, sem especificar os argumentos que usei no build, deixando somente os argumentos padrão, a aplicação funcionou normalmente, nesse ponto que estou confuso agora, e caso eu especifique os argumentos do build gera erro no modulo java.base
Verifiquei que os argumentos usados pelo tomcat são os seguintes:
--add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED