参考文献

DICOM压缩遇到的问题

  • 注意: 操作系统为Windows

  • 使用dcm4che源码中的dcm4che-tool/dcm4che-tool-dcm2dcm进行DICOM图像压缩时报如下错误

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    Exception in thread "main" java.lang.UnsatisfiedLinkError: no opencv_java in java.library.path: [G:\env\jdk-11.0.20_windows-x64_bin\jdk-11.0.20\bin, .]
    at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2662)
    at java.base/java.lang.Runtime.loadLibrary0(Runtime.java:827)
    at java.base/java.lang.System.loadLibrary(System.java:1884)
    at org.opencv.osgi.OpenCVNativeLoader.init(OpenCVNativeLoader.java:17)
    at org.dcm4che3.opencv.NativeJPEGImageWriter.<clinit>(NativeJPEGImageWriter.java:79)
    at org.dcm4che3.opencv.NativeJPEGImageWriterSpi.createWriterInstance(NativeJPEGImageWriterSpi.java:123)
    at java.desktop/javax.imageio.spi.ImageWriterSpi.createWriterInstance(ImageWriterSpi.java:351)
    at java.desktop/javax.imageio.ImageIO$ImageWriterIterator.next(ImageIO.java:849)
    at java.desktop/javax.imageio.ImageIO$ImageWriterIterator.next(ImageIO.java:833)
    at org.dcm4che3.imageio.codec.ImageWriterFactory.getImageWriterFromImageIOServiceRegistry(ImageWriterFactory.java:245)
    at org.dcm4che3.imageio.codec.ImageWriterFactory.getImageWriter(ImageWriterFactory.java:237)
    at org.dcm4che3.imageio.codec.Transcoder.initCompressor(Transcoder.java:381)
    at org.dcm4che3.imageio.codec.Transcoder.setDestinationTransferSyntax(Transcoder.java:307)
    at org.dcm4che3.tool.dcm2dcm.Dcm2Dcm.transcodeWithTranscoder(Dcm2Dcm.java:403)
    at org.dcm4che3.tool.dcm2dcm.Dcm2Dcm.transcode(Dcm2Dcm.java:345)
    at org.dcm4che3.tool.dcm2dcm.Dcm2Dcm.mtranscode(Dcm2Dcm.java:336)
    at org.dcm4che3.tool.dcm2dcm.Dcm2Dcm.mtranscode(Dcm2Dcm.java:318)
    at org.dcm4che3.tool.dcm2dcm.Dcm2Dcm.main(Dcm2Dcm.java:290)
    • 报错信息说明在java.library.path路径下未发现opencv_java的动态链接库(opencv_java.dll文件)

错误的解决方法

  • 经查阅网上相关博客,发现基本上的文章都是说直接去opencv官网去下载opencv的包,然后解压后会得到对应的opencv_java${版本号}.dll文件,然后将这个文件直接复制到对应${JDK_HOME}/bin目录下就可以了

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    HOLELIN@DESKTOP-72OHB10 MINGW64 ~/Downloads
    $ cd opencv

    HOLELIN@DESKTOP-72OHB10 MINGW64 ~/Downloads/opencv
    $ ll
    total 52
    -rw-r--r-- 1 HOLELIN 197121 11560 Jun 6 2022 LICENSE.txt
    -rw-r--r-- 1 HOLELIN 197121 27913 Jun 6 2022 LICENSE_FFMPEG.txt
    -rw-r--r-- 1 HOLELIN 197121 868 Jun 6 2022 README.md.txt
    drwxr-xr-x 1 HOLELIN 197121 0 Oct 12 17:29 build/
    drwxr-xr-x 1 HOLELIN 197121 0 Oct 12 17:30 sources/

    HOLELIN@DESKTOP-72OHB10 MINGW64 ~/Downloads/opencv
    $ cd build/

    HOLELIN@DESKTOP-72OHB10 MINGW64 ~/Downloads/opencv/build
    $ ll
    total 25
    -rw-r--r-- 1 HOLELIN 197121 11560 May 11 2022 LICENSE
    -rw-r--r-- 1 HOLELIN 197121 433 Jun 5 2022 OpenCVConfig-version.cmake
    -rw-r--r-- 1 HOLELIN 197121 7004 Jun 5 2022 OpenCVConfig.cmake
    drwxr-xr-x 1 HOLELIN 197121 0 Oct 12 17:30 bin/
    drwxr-xr-x 1 HOLELIN 197121 0 Oct 12 17:29 etc/
    drwxr-xr-x 1 HOLELIN 197121 0 Oct 12 17:29 include/
    drwxr-xr-x 1 HOLELIN 197121 0 Oct 12 17:29 java/
    drwxr-xr-x 1 HOLELIN 197121 0 Oct 12 17:29 python/
    -rw-r--r-- 1 HOLELIN 197121 781 Jun 5 2022 setup_vars_opencv4.cmd
    drwxr-xr-x 1 HOLELIN 197121 0 Oct 12 17:29 x64/

    HOLELIN@DESKTOP-72OHB10 MINGW64 ~/Downloads/opencv/build
    $ cd java

    HOLELIN@DESKTOP-72OHB10 MINGW64 ~/Downloads/opencv/build/java
    $ ll
    total 708
    -rw-r--r-- 1 HOLELIN 197121 724548 Jun 5 2022 opencv-460.jar
    drwxr-xr-x 1 HOLELIN 197121 0 Oct 12 17:30 x64/
    drwxr-xr-x 1 HOLELIN 197121 0 Oct 12 17:30 x86/
    HOLELIN@DESKTOP-72OHB10 MINGW64 ~/Downloads/opencv/build/java
    $ cd x64/

    HOLELIN@DESKTOP-72OHB10 MINGW64 ~/Downloads/opencv/build/java/x64
    $ ll
    total 50268
    -rwxr-xr-x 1 HOLELIN 197121 51472896 Jun 5 2022 opencv_java460.dll*

  • 但实测这些步骤是存在一些问题的,大致问题如下:

    • 首先报错内容为no opencv_java in java.library.path,opencv_java${版本号}.dll文件直接放到${JDK_HOME}/bin,还是会报no opencv_java in java.library.path错误

    • 修改opencv_java${版本号}.dll文件为opencv_java .dll(即去掉版本号和报错信息一致),修改后重新运行Dcm2Dcm.java,报错信息变为以下内容:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      1013, 2023 10:04:47 上午 org.opencv.osgi.OpenCVNativeLoader init
      信息: Successfully loaded OpenCV native library.
      10:04:47.575 [main] DEBUG org.dcm4che3.imageio.codec.Transcoder - Compressor: org.dcm4che3.opencv.NativeJPEGImageWriter
      Failed to transcode C:\Users\HOLELIN\Desktop\23200905data\1148620123228299264\0bdb3c34-906c-4f45-92b9-b32ef40d68cb: Native JPEG encoding error
      javax.imageio.IIOException: Native JPEG encoding error
      at org.dcm4che3.opencv.NativeJPEGImageWriter.write(NativeJPEGImageWriter.java:174)
      at org.dcm4che3.imageio.codec.Transcoder.compressFrame(Transcoder.java:749)
      at org.dcm4che3.imageio.codec.Transcoder.compressPixelData(Transcoder.java:592)
      at org.dcm4che3.imageio.codec.Transcoder.processPixelData(Transcoder.java:513)
      at org.dcm4che3.imageio.codec.Transcoder.access$800(Transcoder.java:71)
      at org.dcm4che3.imageio.codec.Transcoder$1.readValue(Transcoder.java:466)
      at org.dcm4che3.io.DicomInputStream.readAttributes(DicomInputStream.java:703)
      at org.dcm4che3.io.DicomInputStream.readAllAttributes(DicomInputStream.java:590)
      at org.dcm4che3.imageio.codec.Transcoder.transcode(Transcoder.java:440)
      at org.dcm4che3.tool.dcm2dcm.Dcm2Dcm.transcodeWithTranscoder(Dcm2Dcm.java:405)
      at org.dcm4che3.tool.dcm2dcm.Dcm2Dcm.transcode(Dcm2Dcm.java:345)
      at org.dcm4che3.tool.dcm2dcm.Dcm2Dcm.mtranscode(Dcm2Dcm.java:336)
      at org.dcm4che3.tool.dcm2dcm.Dcm2Dcm.mtranscode(Dcm2Dcm.java:318)
      at org.dcm4che3.tool.dcm2dcm.Dcm2Dcm.main(Dcm2Dcm.java:290)
      Caused by: java.lang.UnsatisfiedLinkError: org.opencv.imgcodecs.Imgcodecs.dicomJpgWrite_0(JJLjava/lang/String;)J
      at org.opencv.imgcodecs.Imgcodecs.dicomJpgWrite_0(Native Method)
      at org.opencv.imgcodecs.Imgcodecs.dicomJpgWrite(Imgcodecs.java:545)
      at org.dcm4che3.opencv.NativeJPEGImageWriter.write(NativeJPEGImageWriter.java:160)
      ... 13 more
      Disconnected from the target VM, address: '127.0.0.1:52354', transport: 'socket'
      • 该错误信息,经查阅后表示dcm4che使用的opencv_java版本和${JDK_HOME}/bin中的opencv_java版本不兼容
    • 那么问题来了如何找到dcm4che版本对应的opencv_java.dll呢?

正确的解决方法

  • 经查阅dcm4che相关资料,未发现有明确的dcm4che版本和opencv_java.dll版本映射关系,后查相关博客发现dcm4che分发的二进制包里面还有opencv_java.dll

  • 我下载在dcm4che源码版本为5.31.0,去dcm4chegithub仓库下发现二进制分发地址为:https://sourceforge.net/projects/dcm4che/files/dcm4che3

    img

  • 打开地址,找到对应的二进制包并下载

    img

  • 下载后找打系统对应的opencv_java.dll,此处我的机器是64位的opencv_java.dll路径为../dcm4che-5.31.0-bin/dcm4che-5.31.0/lib/windows-x86-64/opencv_java.dll

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    HOLELIN@DESKTOP-72OHB10 MINGW64 ~/Downloads/dcm4che-5.31.0-bin
    $ cd dcm4che-5.31.0/

    HOLELIN@DESKTOP-72OHB10 MINGW64 ~/Downloads/dcm4che-5.31.0-bin/dcm4che-5.31.0
    $ ll
    total 260
    -rw-r--r-- 1 HOLELIN 197121 26225 Sep 2 2021 LICENSE.txt
    -rw-r--r-- 1 HOLELIN 197121 12284 Jun 27 17:09 README.md
    drwxr-xr-x 1 HOLELIN 197121 0 Oct 13 09:41 bin/
    drwxr-xr-x 1 HOLELIN 197121 0 Oct 13 09:41 etc/
    drwxr-xr-x 1 HOLELIN 197121 0 Oct 13 09:41 js/
    drwxr-xr-x 1 HOLELIN 197121 0 Oct 13 09:41 lib/

    HOLELIN@DESKTOP-72OHB10 MINGW64 ~/Downloads/dcm4che-5.31.0-bin/dcm4che-5.31.0
    $ cd lib/

    HOLELIN@DESKTOP-72OHB10 MINGW64 ~/Downloads/dcm4che-5.31.0-bin/dcm4che-5.31.0/lib
    $ ll
    total 10556
    -rw-r--r-- 1 HOLELIN 197121 69564 Jun 12 12:27 clibwrapper_jiio-1.2-pre-dr-b04.jar
    -rw-r--r-- 1 HOLELIN 197121 53820 Sep 2 2021 commons-cli-1.4.jar
    -rw-r--r-- 1 HOLELIN 197121 52102 Aug 22 15:33 dcm4che-audit-5.31.0.jar
    -rw-r--r-- 1 HOLELIN 197121 23727 Aug 22 15:34 dcm4che-conf-api-5.31.0.jar
    -rw-r--r-- 1 HOLELIN 197121 5119 Aug 22 15:34 dcm4che-conf-api-hl7-5.31.0.jar
    -rw-r--r-- 1 HOLELIN 197121 59768 Aug 22 15:34 dcm4che-conf-ldap-5.31.0.jar
    -rw-r--r-- 1 HOLELIN 197121 14365 Aug 22 15:34 dcm4che-conf-ldap-audit-5.31.0.jar
    -rw-r--r-- 1 HOLELIN 197121 12827 Aug 22 15:34 dcm4che-conf-ldap-hl7-5.31.0.jar
    -rw-r--r-- 1 HOLELIN 197121 14237 Aug 22 15:34 dcm4che-conf-ldap-imageio-5.31.0.jar
    -rw-r--r-- 1 HOLELIN 197121 528789 Aug 22 15:34 dcm4che-core-5.31.0.jar
    -rw-r--r-- 1 HOLELIN 197121 30866 Aug 22 15:34 dcm4che-dcmr-5.31.0.jar
    -rw-r--r-- 1 HOLELIN 197121 12805 Aug 22 15:34 dcm4che-deident-5.31.0.jar
    -rw-r--r-- 1 HOLELIN 197121 1001673 Aug 22 15:35 dcm4che-dict-priv-5.31.0.jar
    -rw-r--r-- 1 HOLELIN 197121 13446 Aug 22 15:35 dcm4che-emf-5.31.0.jar
    -rw-r--r-- 1 HOLELIN 197121 30094 Aug 22 15:34 dcm4che-hl7-5.31.0.jar
    -rw-r--r-- 1 HOLELIN 197121 73082 Aug 22 15:34 dcm4che-image-5.31.0.jar
    -rw-r--r-- 1 HOLELIN 197121 133337 Aug 22 15:34 dcm4che-imageio-5.31.0.jar
    -rw-r--r-- 1 HOLELIN 197121 39682 Aug 22 15:35 dcm4che-imageio-opencv-5.31.0.jar
    -rw-r--r-- 1 HOLELIN 197121 9061 Aug 22 15:35 dcm4che-imageio-rle-5.31.0.jar
    -rw-r--r-- 1 HOLELIN 197121 22167 Aug 22 15:35 dcm4che-json-5.31.0.jar
    -rw-r--r-- 1 HOLELIN 197121 8127 Aug 22 15:35 dcm4che-mime-5.31.0.jar
    -rw-r--r-- 1 HOLELIN 197121 204982 Aug 22 15:34 dcm4che-net-5.31.0.jar
    -rw-r--r-- 1 HOLELIN 197121 46465 Aug 22 15:34 dcm4che-net-audit-5.31.0.jar
    -rw-r--r-- 1 HOLELIN 197121 28071 Aug 22 15:34 dcm4che-net-hl7-5.31.0.jar
    -rw-r--r-- 1 HOLELIN 197121 85568 Aug 22 15:35 dcm4che-qstar-5.31.0.jar
    -rw-r--r-- 1 HOLELIN 197121 11687 Aug 22 15:35 dcm4che-soundex-5.31.0.jar
    -rw-r--r-- 1 HOLELIN 197121 8458 Aug 22 15:35 dcm4che-tool-agfa2dcm-5.31.0.jar
    -rw-r--r-- 1 HOLELIN 197121 11845 Aug 22 15:35 dcm4che-tool-agfa2sr-5.31.0.jar
    -rw-r--r-- 1 HOLELIN 197121 21605 Aug 22 15:35 dcm4che-tool-common-5.31.0.jar
    -rw-r--r-- 1 HOLELIN 197121 11710 Aug 22 15:35 dcm4che-tool-dcm2dcm-5.31.0.jar
    -rw-r--r-- 1 HOLELIN 197121 13187 Aug 22 15:36 dcm4che-tool-dcm2jpg-5.31.0.jar
    -rw-r--r-- 1 HOLELIN 197121 8658 Aug 22 15:36 dcm4che-tool-dcm2json-5.31.0.jar
    -rw-r--r-- 1 HOLELIN 197121 9882 Aug 22 15:36 dcm4che-tool-dcm2pdf-5.31.0.jar
    -rw-r--r-- 1 HOLELIN 197121 5918 Aug 22 15:36 dcm4che-tool-dcm2str-5.31.0.jar
    -rw-r--r-- 1 HOLELIN 197121 9383 Aug 22 15:36 dcm4che-tool-dcm2xml-5.31.0.jar
    -rw-r--r-- 1 HOLELIN 197121 6090 Aug 22 15:36 dcm4che-tool-dcmbenchmark-5.31.0.jar
    -rw-r--r-- 1 HOLELIN 197121 17706 Aug 22 15:36 dcm4che-tool-dcmdir-5.31.0.jar
    -rw-r--r-- 1 HOLELIN 197121 8236 Aug 22 15:36 dcm4che-tool-dcmdump-5.31.0.jar
    -rw-r--r-- 1 HOLELIN 197121 12692 Aug 22 15:36 dcm4che-tool-dcmldap-5.31.0.jar
    -rw-r--r-- 1 HOLELIN 197121 38960 Aug 22 15:36 dcm4che-tool-dcmqrscp-5.31.0.jar
    -rw-r--r-- 1 HOLELIN 197121 5341 Aug 22 15:36 dcm4che-tool-dcmvalidate-5.31.0.jar
    -rw-r--r-- 1 HOLELIN 197121 7861 Aug 22 15:36 dcm4che-tool-deidentify-5.31.0.jar
    -rw-r--r-- 1 HOLELIN 197121 7290 Aug 22 15:36 dcm4che-tool-emf2sf-5.31.0.jar
    -rw-r--r-- 1 HOLELIN 197121 17684 Aug 22 15:36 dcm4che-tool-findscu-5.31.0.jar
    -rw-r--r-- 1 HOLELIN 197121 9670 Aug 22 15:36 dcm4che-tool-fixlo2un-5.31.0.jar
    -rw-r--r-- 1 HOLELIN 197121 18472 Aug 22 15:36 dcm4che-tool-getscu-5.31.0.jar
    -rw-r--r-- 1 HOLELIN 197121 7147 Aug 22 15:36 dcm4che-tool-hl72xml-5.31.0.jar
    -rw-r--r-- 1 HOLELIN 197121 8375 Aug 22 15:36 dcm4che-tool-hl7pdq-5.31.0.jar
    -rw-r--r-- 1 HOLELIN 197121 7898 Aug 22 15:36 dcm4che-tool-hl7pix-5.31.0.jar
    -rw-r--r-- 1 HOLELIN 197121 10442 Aug 22 15:36 dcm4che-tool-hl7rcv-5.31.0.jar
    -rw-r--r-- 1 HOLELIN 197121 9052 Aug 22 15:36 dcm4che-tool-hl7snd-5.31.0.jar
    -rw-r--r-- 1 HOLELIN 197121 9155 Aug 22 15:36 dcm4che-tool-ianscp-5.31.0.jar
    -rw-r--r-- 1 HOLELIN 197121 11092 Aug 22 15:36 dcm4che-tool-ianscu-5.31.0.jar
    -rw-r--r-- 1 HOLELIN 197121 14057 Aug 22 15:37 dcm4che-tool-ihe-modality-5.31.0.jar
    -rw-r--r-- 1 HOLELIN 197121 15896 Aug 22 15:37 dcm4che-tool-jpg2dcm-5.31.0.jar
    -rw-r--r-- 1 HOLELIN 197121 10246 Aug 22 15:37 dcm4che-tool-json2dcm-5.31.0.jar
    -rw-r--r-- 1 HOLELIN 197121 7361 Aug 22 15:37 dcm4che-tool-json2index-5.31.0.jar
    -rw-r--r-- 1 HOLELIN 197121 8070 Aug 22 15:37 dcm4che-tool-json2props-5.31.0.jar
    -rw-r--r-- 1 HOLELIN 197121 9551 Aug 22 15:37 dcm4che-tool-json2rst-5.31.0.jar
    -rw-r--r-- 1 HOLELIN 197121 9375 Aug 22 15:37 dcm4che-tool-maskpxdata-5.31.0.jar
    -rw-r--r-- 1 HOLELIN 197121 11043 Aug 22 15:36 dcm4che-tool-mkkos-5.31.0.jar
    -rw-r--r-- 1 HOLELIN 197121 12995 Aug 22 15:37 dcm4che-tool-movescu-5.31.0.jar
    -rw-r--r-- 1 HOLELIN 197121 9960 Aug 22 15:37 dcm4che-tool-mppsscp-5.31.0.jar
    -rw-r--r-- 1 HOLELIN 197121 18296 Aug 22 15:36 dcm4che-tool-mppsscu-5.31.0.jar
    -rw-r--r-- 1 HOLELIN 197121 13663 Aug 22 15:37 dcm4che-tool-pdf2dcm-5.31.0.jar
    -rw-r--r-- 1 HOLELIN 197121 15274 Aug 22 15:37 dcm4che-tool-planarconfig-5.31.0.jar
    -rw-r--r-- 1 HOLELIN 197121 9757 Aug 22 15:37 dcm4che-tool-qstar-5.31.0.jar
    -rw-r--r-- 1 HOLELIN 197121 15098 Aug 22 15:36 dcm4che-tool-stgcmtscu-5.31.0.jar
    -rw-r--r-- 1 HOLELIN 197121 12305 Aug 22 15:37 dcm4che-tool-storescp-5.31.0.jar
    -rw-r--r-- 1 HOLELIN 197121 18013 Aug 22 15:36 dcm4che-tool-storescu-5.31.0.jar
    -rw-r--r-- 1 HOLELIN 197121 37805 Aug 22 15:37 dcm4che-tool-stowrs-5.31.0.jar
    -rw-r--r-- 1 HOLELIN 197121 14359 Aug 22 15:37 dcm4che-tool-stowrsd-5.31.0.jar
    -rw-r--r-- 1 HOLELIN 197121 8948 Aug 22 15:37 dcm4che-tool-swappxdata-5.31.0.jar
    -rw-r--r-- 1 HOLELIN 197121 8791 Aug 22 15:37 dcm4che-tool-syslog-5.31.0.jar
    -rw-r--r-- 1 HOLELIN 197121 7280 Aug 22 15:37 dcm4che-tool-syslogd-5.31.0.jar
    -rw-r--r-- 1 HOLELIN 197121 11225 Aug 22 15:37 dcm4che-tool-tpl2xml-5.31.0.jar
    -rw-r--r-- 1 HOLELIN 197121 20959 Aug 22 15:37 dcm4che-tool-upsscu-5.31.0.jar
    -rw-r--r-- 1 HOLELIN 197121 13430 Aug 22 15:37 dcm4che-tool-wadors-5.31.0.jar
    -rw-r--r-- 1 HOLELIN 197121 12473 Aug 22 15:37 dcm4che-tool-wadows-5.31.0.jar
    -rw-r--r-- 1 HOLELIN 197121 10443 Aug 22 15:37 dcm4che-tool-xml2dcm-5.31.0.jar
    -rw-r--r-- 1 HOLELIN 197121 5177 Aug 22 15:37 dcm4che-tool-xml2hl7-5.31.0.jar
    -rw-r--r-- 1 HOLELIN 197121 13405 Aug 22 15:37 dcm4che-tool-xroad-5.31.0.jar
    -rw-r--r-- 1 HOLELIN 197121 7210 Aug 22 15:35 dcm4che-ws-rs-5.31.0.jar
    -rw-r--r-- 1 HOLELIN 197121 143140 Aug 22 15:35 dcm4che-xdsi-5.31.0.jar
    -rw-r--r-- 1 HOLELIN 197121 35351 Aug 22 15:35 dcm4che-xroad-5.31.0.jar
    -rw-r--r-- 1 HOLELIN 197121 204972 Sep 2 2021 gmbal-4.0.0.jar
    -rw-r--r-- 1 HOLELIN 197121 29931 Sep 2 2021 istack-commons-runtime-3.0.10.jar
    -rw-r--r-- 1 HOLELIN 197121 1172845 Jun 12 12:27 jai_imageio-1.2-pre-dr-b04.jar
    -rw-r--r-- 1 HOLELIN 197121 68453 Sep 2 2021 jakarta.activation-1.2.2.jar
    -rw-r--r-- 1 HOLELIN 197121 140425 Sep 2 2021 jakarta.json-1.1.6.jar
    -rw-r--r-- 1 HOLELIN 197121 15860 Sep 2 2021 jakarta.jws-api-1.1.1.jar
    -rw-r--r-- 1 HOLELIN 197121 115498 Sep 2 2021 jakarta.xml.bind-api-2.3.2.jar
    -rw-r--r-- 1 HOLELIN 197121 36161 Sep 2 2021 jakarta.xml.soap-api-1.4.1.jar
    -rw-r--r-- 1 HOLELIN 197121 57877 Sep 2 2021 jakarta.xml.ws-api-2.3.2.jar
    -rw-r--r-- 1 HOLELIN 197121 1035485 Sep 2 2021 jaxb-runtime-2.3.3-b02.jar
    drwxr-xr-x 1 HOLELIN 197121 0 Oct 13 09:41 linux-aarch64/
    drwxr-xr-x 1 HOLELIN 197121 0 Oct 13 09:41 linux-armv7a/
    drwxr-xr-x 1 HOLELIN 197121 0 Oct 13 09:41 linux-s390x/
    drwxr-xr-x 1 HOLELIN 197121 0 Oct 13 09:41 linux-x86/
    drwxr-xr-x 1 HOLELIN 197121 0 Oct 13 09:41 linux-x86-64/
    -rw-r--r-- 1 HOLELIN 197121 233855 Dec 20 2021 logback-classic-1.2.9.jar
    -rw-r--r-- 1 HOLELIN 197121 454201 Dec 20 2021 logback-core-1.2.9.jar
    drwxr-xr-x 1 HOLELIN 197121 0 Oct 13 09:41 macosx-aarch64/
    drwxr-xr-x 1 HOLELIN 197121 0 Oct 13 09:41 macosx-x86-64/
    -rw-r--r-- 1 HOLELIN 197121 67125 Sep 2 2021 mimepull-1.9.11.jar
    -rw-r--r-- 1 HOLELIN 197121 181165 Sep 2 2021 policy-2.7.6.jar
    -rw-r--r-- 1 HOLELIN 197121 2375471 Sep 2 2021 rt-2.3.2.jar
    -rw-r--r-- 1 HOLELIN 197121 457331 Sep 2 2021 saaj-impl-1.5.1.jar
    -rw-r--r-- 1 HOLELIN 197121 41513 Sep 7 2021 slf4j-api-1.7.32.jar
    drwxr-xr-x 1 HOLELIN 197121 0 Oct 13 09:41 solaris-sparc/
    drwxr-xr-x 1 HOLELIN 197121 0 Oct 13 09:41 solaris-sparcv9/
    drwxr-xr-x 1 HOLELIN 197121 0 Oct 13 09:41 solaris-x86/
    drwxr-xr-x 1 HOLELIN 197121 0 Oct 13 09:41 solaris-x86-64/
    -rw-r--r-- 1 HOLELIN 197121 38099 Sep 2 2021 stax-ex-1.8.1.jar
    -rw-r--r-- 1 HOLELIN 197121 73918 Sep 2 2021 streambuffer-1.5.7.jar
    -rw-r--r-- 1 HOLELIN 197121 303420 Dec 29 2022 weasis-core-img-4.6.0.jar
    drwxr-xr-x 1 HOLELIN 197121 0 Oct 13 09:41 windows-x86/
    drwxr-xr-x 1 HOLELIN 197121 0 Oct 13 09:41 windows-x86-64/

    HOLELIN@DESKTOP-72OHB10 MINGW64 ~/Downloads/dcm4che-5.31.0-bin/dcm4che-5.31.0/lib
    $ cd windows-x86-64/

    HOLELIN@DESKTOP-72OHB10 MINGW64 ~/Downloads/dcm4che-5.31.0-bin/dcm4che-5.31.0/lib/windows-x86-64
    $ ll
    total 10308
    -rwxr-xr-x 1 HOLELIN 197121 10555392 Dec 29 2022 opencv_java.dll*

  • 最后将其复制到${JDK_HOME}/bin

Linux下处理

  • 问题与上面类似,只是环境不同
  • 处理方法为: 找到对应环境下的libclib_jiio.so,libopencv_java.so两个文件,复制到java jdk /lib中 和 服务器 /usr/lib* 文件夹下 重启程序即可
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
[baf643f1-698d-4018-ba2e-e488c82b77da] 2023-10-20 14:07:45.246 [Async-2] ERROR o.s.a.i.SimpleAsyncUnc                          aughtExceptionHandler - Unexpected exception occurred invoking async method: public void com.holelin.ct.ev                          ents.UploadFile2OssEventListener.uploadSingleDcmZip2OssHandler(com.holelin.ct.events.UploadSingleDcmZip2Os                          sEvent)
java.lang.NoClassDefFoundError: Could not initialize class org.dcm4che3.opencv.NativeJ2kImageWriter
at org.dcm4che3.opencv.NativeJ2kImageWriterSpi.createWriterInstance(NativeJ2kImageWriterSpi.j ava:81)
at java.desktop/javax.imageio.spi.ImageWriterSpi.createWriterInstance(ImageWriterSpi.java:351 )
at java.desktop/javax.imageio.ImageIO$ImageWriterIterator.next(ImageIO.java:849)
at java.desktop/javax.imageio.ImageIO$ImageWriterIterator.next(ImageIO.java:833)
at org.dcm4che3.imageio.codec.ImageWriterFactory.getImageWriterFromImageIOServiceRegistry(Ima geWriterFactory.java:245)
at org.dcm4che3.imageio.codec.ImageWriterFactory.getImageWriter(ImageWriterFactory.java:237)
at org.dcm4che3.imageio.codec.Transcoder.initCompressor(Transcoder.java:381)
at org.dcm4che3.imageio.codec.Transcoder.setDestinationTransferSyntax(Transcoder.java:307)
at com.holelin.ct.util.DicomUtil.transcodeWithTranscoder(DicomUtil.java:47)
at com.holelin.ct.util.DicomUtil.j2ki(DicomUtil.java:22)
at com.holelin.ct.events.UploadFile2OssEventListener.uploadSingleDcmZip2OssHandler(UploadFile2OssE ventListener.java:90)
at com.holelin.ct.events.UploadFile2OssEventListener$$FastClassBySpringCGLIB$$94856399.invoke(<gen erated>)
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(Cgli bAopProxy.java:769)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvoc ation.java:163)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProx y.java:747)
at org.springframework.aop.interceptor.AsyncExecutionInterceptor.lambda$invoke$0(AsyncExecuti onInterceptor.java:115)
at com.holelin.ct.config.MdcThreadPoolTaskExecutor.lambda$wrap$0(MdcThreadPoolTaskExecutor.java:72 )
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:829)
  • 实操

    • 我的环境为基于openjdk:11构建的docker容器,处理操作都在容器中操作的

      1. 进入容器确定java的目录

        • 找到最终libclib_jiio.so,libopencv_java.so文件的目录(即/usr/local/openjdk-11/lib)下
        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        13
        14
        15
        16
        17
        # whereis java
        java: /usr/local/openjdk-11/bin/java
        # cd /usr/local/openjdk-11/
        # ls -al
        total 52
        drwxr-xr-x 1 root root 4096 Jun 23 2022 .
        drwxr-xr-x 1 root root 4096 Oct 20 14:02 ..
        drwxrwxr-x 2 root root 4096 Apr 20 2022 bin
        drwxrwxr-x 4 root root 4096 Apr 20 2022 conf
        drwxrwxr-x 4 root root 4096 Apr 20 2022 demo
        drwxrwxr-x 3 root root 4096 Apr 20 2022 include
        drwxrwxr-x 2 root root 4096 Apr 20 2022 jmods
        drwxrwxr-x 73 root root 4096 Apr 20 2022 legal
        drwxrwxr-x 1 root root 4096 Oct 20 14:14 lib
        drwxrwxr-x 4 root root 4096 Apr 20 2022 man
        -rw-rw-r-- 1 root root 1221 Apr 20 2022 release

        • 以及/usr/lib
      2. libclib_jiio.so,libopencv_java.so复制到容器中

        1
        2
        3
        4
        5
        docker cp libclib_jiio.so  e923ac8b343c:/usr/lib
        docker cp libclib_jiio.so e923ac8b343c:/usr/local/openjdk-11/lib

        docker cp libopencv_java.so e923ac8b343c:/usr/lib
        docker cp libopencv_java.so e923ac8b343c:/usr/local/openjdk-11/lib