deeplearning4j - 为什么 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)
解决方案
到目前为止,看起来 IntRawIndexer 类中的这个调用在 Wildfly 环境中返回 null。/** 原始内存接口的实例。*/ protected static final Raw RAW = Raw.getInstance(); 仔细观察,它依赖于 sun.misc.Unsafe ,如果在加载该类 Class.forName("sun.misc.Unsafe") 或检查类加载后的那个类。更多的努力和根本原因是 Wildfly 没有找到从该 jar 调用的 Unsafe 类。它显然可以从我所做的测试中从 servlet 中找到它。
推荐阅读
- javascript - 使用ffmpeg的音频文件(例如mp3)的左声道延迟20毫秒?
- elasticsearch - 使用 Spring Data Elasticsearch 索引文档时的 AWS 签名请求
- c - 在这种情况下 malloc 和 calloc 之间的区别?
- python - 在 HPC 上运行 python 脚本
- r - 使用离散化(离散=T)时无法在 mgcv 中生成预测
- ios - AVPlayer - 如何以编程方式打开/关闭来自 HTTP Live Streaming 视频的 CC?
- asp.net-mvc - 为实体设置主键而不影响数据库
- visual-studio-code - 如何在 VS Code 扩展中显示上下文菜单
- python - 如何比较数据框的字符串值和元组列表
- python-3.x - 我在 jupter 笔记本中导入模块 import pdftotext 时遇到问题。“ImportError:DLL 加载失败:找不到指定的过程”