显式动态加载Java字符集

显式动态加载Java字符集,java,dependency-injection,Java,Dependency Injection,这不是重复。我想做同样的事情,但不使用META-INF。这可能吗?是针对各种服务类型的通用解决方案吗 在这个特定的例子中,我需要使用CharsetProvider处理utf-7数据,如。除了向类路径添加jar之外,还需要向META-INF/services添加一个文件,其中文件名为java.nio.charset.spi.CharsetProvider,内容标识为jutf7。但是,在这种情况下不可能使用META-INF。有解决办法吗?没有,除了通过实现a之外,不可能注册新的字符集,只能通过MET

这不是重复。我想做同样的事情,但不使用META-INF。这可能吗?是针对各种服务类型的通用解决方案吗


在这个特定的例子中,我需要使用CharsetProvider处理utf-7数据,如。除了向类路径添加jar之外,还需要向META-INF/services添加一个文件,其中文件名为java.nio.charset.spi.CharsetProvider,内容标识为jutf7。但是,在这种情况下不可能使用META-INF。有解决办法吗?

没有,除了通过实现a之外,不可能注册新的
字符集,只能通过
META-INF/services
注册。请参阅javadoc


但是,这并不意味着您必须为jutf7提供该文件。JUTF7JAR文件已经有了必要的服务文件。正如您链接的页面所说:只要将jar放在类路径中,您就可以开始了。

为什么不能使用META-INF?感谢您的提示,它建议了一种解决方法。不幸的是,它失败了,因为在我的例子中,系统类加载器与用于加载用户导入的类的类加载器不同,字符集提供程序服务直接使用系统类加载器。有一个涉及反射的解决方案,但它并不漂亮。这是一个古老的未解决的错误: