首页 > 解决方案 > 为什么 NativeImageLoader.asMatrix 出现异常。在 Eclipse 中可以正常工作,但不能作为 servlet

问题描述

调用 NativeImageLoader.asMatrix() 时出现空指针异常。我试图弄清楚痕迹告诉我什么。我正在使用 DeepLearning 1.0.0-beta7。

有什么提示吗?谢谢!

2020-11-03 14:49:17,273 错误 [stderr] (pool-19-thread-25) java.lang.NullPointerException

2020-11-03 14:49:17,273 错误 [stderr] (pool-19-thread-25) at org.bytedeco.javacpp.indexer.LongRawIndexer.getRaw(LongRawIndexer.java:73)

2020-11-03 14:49:17,273 错误 [stderr] (pool-19-thread-25) at org.bytedeco.javacpp.indexer.LongRawIndexer.get(LongRawIndexer.java:76)

2020-11-03 14:49:17,273 错误 [stderr] (pool-19-thread-25) at org.nd4j.linalg.api.buffer.BaseDataBuffer.getLong(BaseDataBuffer.java:872)

2020-11-03 14:49:17,273 错误 [stderr] (pool-19-thread-25) at org.nd4j.linalg.jcublas.buffer.BaseCudaDataBuffer.getLongUnsynced(BaseCudaDataBuffer.java:1304)

2020-11-03 14:49:17,273 org.nd4j.linalg.api.buffer.BaseDataBuffer.asLong(BaseDataBuffer.java:813) 处的错误 [stderr] (pool-19-thread-25)

2020-11-03 14:49:17,273 错误 [stderr] (pool-19-thread-25) at org.nd4j.linalg.jcublas.buffer.BaseCudaDataBuffer.asLong(BaseCudaDataBuffer.java:1539)

2020-11-03 14:49:17,274 错误 [stderr] (pool-19-thread-25) at org.nd4j.linalg.api.ndarray.BaseShapeInfoProvider.createShapeInformation(BaseShapeInfoProvider.java:76)

2020-11-03 14:49:17,274 错误 [stderr] (pool-19-thread-25) at org.nd4j.jita.constant.ProtectedCudaShapeInfoProvider.createShapeInformation(ProtectedCudaShapeInfoProvider.java:92)

2020-11-03 14:49:17,274 错误 [stderr] (pool-19-thread-25) at org.nd4j.jita.constant.ProtectedCudaShapeInfoProvider.createShapeInformation(ProtectedCudaShapeInfoProvider.java:73)

2020-11-03 14:49:17,274 错误 [stderr] (pool-19-thread-25) at org.nd4j.linalg.jcublas.CachedShapeInfoProvider.createShapeInformation(CachedShapeInfoProvider.java:42)

2020-11-03 14:49:17,274 错误 [stderr] (pool-19-thread-25) at org.nd4j.linalg.api.ndarray.BaseNDArray.(BaseNDArray.java:181)

2020-11-03 14:49:17,274 错误 [stderr] (pool-19-thread-25) at org.nd4j.linalg.api.ndarray.BaseNDArray.(BaseNDArray.java:310)

2020-11-03 14:49:17,274 错误 [stderr] (pool-19-thread-25) at org.nd4j.linalg.api.ndarray.BaseNDArray.(BaseNDArray.java:363)

2020-11-03 14:49:17,274 错误 [stderr] (pool-19-thread-25) at org.nd4j.linalg.api.ndarray.BaseNDArray.(BaseNDArray.java:786)

2020-11-03 14:49:17,274 错误 [stderr] (pool-19-thread-25) at org.nd4j.linalg.jcublas.JCublasNDArray.(JCublasNDArray.java:287)

2020-11-03 14:49:17,274 错误 [stderr] (pool-19-thread-25) at org.nd4j.linalg.jcublas.JCublasNDArrayFactory.create(JCublasNDArrayFactory.java:172)

2020-11-03 14:49:17,274 错误 [stderr] (pool-19-thread-25) at org.nd4j.linalg.factory.Nd4j.create(Nd4j.java:4247)

2020-11-03 14:49:17,274 错误 [stderr] (pool-19-thread-25) at org.nd4j.linalg.factory.Nd4j.create(Nd4j.java:3964)

2020-11-03 14:49:17,274 org.datavec.image.loader.NativeImageLoader.transformImage(NativeImageLoader.java:671) 处的错误 [stderr] (pool-19-thread-25)

2020-11-03 14:49:17,274 错误 [stderr] (pool-19-thread-25) at org.datavec.image.loader.NativeImageLoader.asMatrix(NativeImageLoader.java:594)

2020-11-03 14:49:17,274 错误 [stderr] (pool-19-thread-25) at org.datavec.image.loader.Java2DNativeImageLoader.asMatrix(Java2DNativeImageLoader.java:92)

2020-11-03 14:49:17,274 错误 [stderr] (pool-19-thread-25) at org.datavec.image.loader.Java2DNativeImageLoader.asMatrix(Java2DNativeImageLoader.java:70)

2020-11-03 14:49:17,274 错误 [stderr] (pool-19-thread-25) at org.datavec.image.loader.Java2DNativeImageLoader.asMatrix(Java2DNativeImageLoader.java:102)

2020-11-03 14:49:17,274 错误 [stderr] (pool-19-thread-25) at org.datavec.image.loader.NativeImageLoader.asMatrix(NativeImageLoader.java:407)

标签: deeplearning4j

解决方案


到目前为止,看起来 IntRawIndexer 类中的这个调用在 Wildfly 环境中返回 null。/** 原始内存接口的实例。*/ protected static final Raw RAW = Raw.getInstance(); 仔细观察,它依赖于 sun.misc.Unsafe ,如果在加载该类 Class.forName("sun.misc.Unsafe") 或检查类加载后的那个类。更多的努力和根本原因是 Wildfly 没有找到从该 jar 调用的 Unsafe 类。它显然可以从我所做的测试中从 servlet 中找到它。


推荐阅读