在Spring应用程序(2.3.3)上,我依赖于我的公司开发的一个模块。从服务中,我从这个依赖项调用一个方法,它需要一个从资源(src/main/resources/META-INF/spring-main-cfg.xml),加载的文件,所以我已经将这个文件复制并粘贴到Spring应用程序资源中。
下面是在该依赖项中执行的代码:
InputStream in = RSAEncrypter.class.getClassLoader().getResourceAsStream(keyFileName);
// StreamCorruptedException here
ObjectInputStream oin = new ObjectInputStream(new BufferedInputStream(in));堆叠:
java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:936) java.io.StreamCorruptedException:无效的流头: EFBFBDEF at
~na:1.8.0_281 at java.io.ObjectInputStream.(ObjectInputStream.java:394) ~na:1.8.0_281
问题是,我创建了一个新的虚拟Maven项目,只有这个依赖项和一个main来执行该代码,而且它可以工作。
我不明白为什么我会在Spring应用程序中执行这个异常。我有相同的Java版本,文件读取是一样的。
有什么想法吗?
发布于 2022-10-30 20:29:00
我终于找到了这个问题,因为我有一个全局文件,这就是它自己的文件:
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>这方面的专家医生说:
警告:不要过滤像图像这样的二进制内容的文件!这很可能导致输出错误。
https://maven.apache.org/plugins/maven-resources-plugin/examples/filter.html
所以我刚为我的文件添加了一个例外:
<resources>
<!-- Only properties files have to be filtered.
META-INF/spring-main-cfg.xml must not be or StreamCorruptedException occure by reading it -->
<resource>
<directory>src/main/resources</directory>
<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<includes>
<include>**/*.properties</include>
</includes>
</resource>
</resources>https://stackoverflow.com/questions/74252280
复制相似问题