BP-自娱 2011-05-11 14:33
浏览 377
已采纳

Jmagick中ntdll.dll的错误

最近想使用Jmagick来处理图片

I try to run a java program which uses JMagick, so I installed the software ImageMagick 6.6.5 Q16, and the Java API JMagick (jmagick-6.2.6-win-im-6.2.9) by putting the files jmagick.dll (found in the installation folder \jmagick\q16) and JMagick.jar(found in the installation folder \jmagick\jar_15) in the folder C:\Program Files\Java\jre6\lib\ext.

But when I run with Eclipse the following program :

[code="java"]
import magick.ImageInfo;
import magick.MagickImage;
import magick.MagickException;

public class TestJMagick {
   public static void main(String args[]) {
      try {
         ImageInfo ii = new ImageInfo("c:/images/test.jpg");
         MagickImage mi = new MagickImage(ii);
         System.out.println(mi.getFileName());
      } catch (MagickException me) {
         System.out.println(me);
      }
   }
}[/code]

There is an error displayed in the console of Eclipse :
[code="java"]、
#
# A fatal error has been detected by the Java Runtime Environment:
#
# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x7c9469da, pid=3192, tid=3212
#
# JRE version: 6.0_20-b02
# Java VM: Java HotSpot(TM) Client VM (16.3-b01 mixed mode, sharing windows-x86 )
# Problematic frame:
# C [ntdll.dll+0x369da]
#
# An error report file with more information is saved as:
# C:\Documents and Settings\workspace\TestJMagick\hs_err_pid3192.log
#
# If you would like to submit a bug report, please visit:
# http://java.sun.com/webapps/bugreport/crash.jsp
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#

[error occurred during error reporting , id 0xc0000005][/code]

When I look the log message, I have the following result :
[code="java"] #
# A fatal error has been detected by the Java Runtime Environment:
#
# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x7c9469da, pid=3192, tid=3212
#
# JRE version: 6.0_20-b02
# Java VM: Java HotSpot(TM) Client VM (16.3-b01 mixed mode, sharing windows-x86 )
# Problematic frame:
# C [ntdll.dll+0x369da]
#
# If you would like to submit a bug report, please visit:
# http://java.sun.com/webapps/bugreport/crash.jsp
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#

---------------  T H R E A D  ---------------

Current thread (0x003a7c00):  JavaThread "main" [_thread_in_native, id=3212, stack(0x008c0000,0x00910000)]

siginfo: ExceptionCode=0xc0000005, reading address 0x00000000

Registers:
EAX=0x00000000, EBX=0x0000037d, ECX=0x03091f88, EDX=0x00000000
ESP=0x00904778, EBP=0x00904998, ESI=0x03090380, EDI=0x03090398
EIP=0x7c9469da, EFLAGS=0x00010246

Top of Stack: (sp=0x00904778)
0x00904778:   00000001 00000009 00000009 030908c8
0x00904788:   03090000 00000000 00904780 7c921086
0x00904798:   009049c4 7c91e920 fffffff4 009049d4
0x009047a8:   7c921028 7c921086 7c9201db 10136ac0
0x009047b8:   030a0048 00000054 7c91e920 7c920228
0x009047c8:   ffffffff 00000fa0 7c921086 7c9201db
0x009047d8:   030b9290 030b92f8 00000010 030c9098
0x009047e8:   0090500c 030c8f00 00000000 100f024a

Instructions: (pc=0x7c9469da)
0x7c9469ca:   11 89 95 64 ff ff ff 8b 40 0c 89 85 5c ff ff ff
0x7c9469da:   8b 00 3b 42 04 0f 85 12 01 00 00 3b c1 0f 85 0a


Stack: [0x008c0000,0x00910000],  sp=0x00904778,  free space=111009042ack
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
C  [ntdll.dll+0x369da]
C  [MSVCR100.dll+0x10269]

Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
j  magick.MagickImage.readImage(Lmagick/ImageInfo;)V+0
j  magick.MagickImage.<init>(Lmagick/ImageInfo;)V+11
j  Principale2.main([Ljava/lang/String;)V+15
v  ~StubRoutines::call_stub

---------------  P R O C E S S  ---------------

Java Threads: ( => current thread )
  0x02b0c400 JavaThread "Low Memory Detector" daemon [_thread_blocked, id=3284, stack(0x02dc0000,0x02e10000)]
  0x02b09000 JavaThread "CompilerThread0" daemon [_thread_blocked, id=3276, stack(0x02d70000,0x02dc0000)]
  0x02b07800 JavaThread "Attach Listener" daemon [_thread_blocked, id=1464, stack(0x02d20000,0x02d70000)]
  0x02b06400 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=2900, stack(0x02cd0000,0x02d20000)]
  0x02afe000 JavaThread "Finalizer" daemon [_thread_blocked, id=2700, stack(0x02c80000,0x02cd0000)]
  0x02afc800 JavaThread "Reference Handler" daemon [_thread_blocked, id=3216, stack(0x02c30000,0x02c80000)]
=>0x003a7c00 JavaThread "main" [_thread_in_native, id=3212, stack(0x008c0000,0x00910000)]

Other Threads:
  0x02afb400 VMThread [stack: 0x02be0000,0x02c30000] [id=3180]
  0x02b0e400 WatcherThread [stack: 0x02e10000,0x02e60000] [id=3292]

VM state:not at safepoint (normal execution)

VM Mutex/Monitor currently owned by a thread: None

Heap
def new generation   total 4928K, used 369K [0x22990000, 0x22ee0000, 0x27ee0000)
  eden space 4416K,   8% used [0x22990000, 0x229ec700, 0x22de0000)
  from space 512K,   0% used [0x22de0000, 0x22de0000, 0x22e60000)
  to   space 512K,   0% used [0x22e60000, 0x22e60000, 0x22ee0000)
tenured generation   total 10944K, used 0K [0x27ee0000, 0x28990000, 0x32990000)
   the space 10944K,   0% used [0x27ee0000, 0x27ee0000, 0x27ee0200, 0x28990000)
compacting perm gen  total 12288K, used 74K [0x32990000, 0x33590000, 0x36990000)
   the space 12288K,   0% used [0x32990000, 0x329a2a90, 0x329a2c00, 0x33590000)
    ro space 10240K,  51% used [0x36990000, 0x36ebae00, 0x36ebae00, 0x37390000)
    rw space 12288K,  54% used [0x37390000, 0x37a272d8, 0x37a27400, 0x37f90000)

Dynamic libraries:
0x00400000 - 0x00424000    C:\Program Files\Java\jre6\bin\javaw.exe
0x7c910000 - 0x7c9c9000    C:\WINDOWS\system32\ntdll.dll
0x7c800000 - 0x7c906000    C:\WINDOWS\system32\kernel32.dll
0x77da0000 - 0x77e4c000    C:\WINDOWS\system32\ADVAPI32.dll
0x77e50000 - 0x77ee2000    C:\WINDOWS\system32\RPCRT4.dll
0x77fc0000 - 0x77fd1000    C:\WINDOWS\system32\Secur32.dll
0x7e390000 - 0x7e421000    C:\WINDOWS\system32\USER32.dll
0x77ef0000 - 0x77f39000    C:\WINDOWS\system32\GDI32.dll
0x7c340000 - 0x7c396000    C:\Program Files\Java\jre6\bin\msvcr71.dll
0x6d800000 - 0x6da97000    C:\Program Files\Java\jre6\bin\client\jvm.dll
0x76ae0000 - 0x76b0f000    C:\WINDOWS\system32\WINMM.dll
0x6d7b0000 - 0x6d7bc000    C:\Program Files\Java\jre6\bin\verify.dll
0x6d330000 - 0x6d34f000    C:\Program Files\Java\jre6\bin\java.dll
0x6d290000 - 0x6d298000    C:\Program Files\Java\jre6\bin\hpi.dll
0x76ba0000 - 0x76bab000    C:\WINDOWS\system32\PSAPI.DLL
0x6d7f0000 - 0x6d7ff000    C:\Program Files\Java\jre6\bin\zip.dll
0x60e80000 - 0x60e9f000    C:\Program Files\Java\jre6\lib\ext\jmagick.dll
0x77be0000 - 0x77c38000    C:\WINDOWS\system32\msvcrt.dll
0x10000000 - 0x101f1000    C:\Program Files\ImageMagick-6.6.5-Q16\CORE_RL_magick_.dll
0x02e70000 - 0x02f23000    C:\Program Files\ImageMagick-6.6.5-Q16\X11.dll
0x71a10000 - 0x71a1a000    C:\WINDOWS\system32\WSOCK32.dll
0x719f0000 - 0x71a07000    C:\WINDOWS\system32\WS2_32.dll
0x719e0000 - 0x719e8000    C:\WINDOWS\system32\WS2HELP.dll
0x02f30000 - 0x02f40000    C:\Program Files\ImageMagick-6.6.5-Q16\CORE_RL_bzlib_.dll
0x78aa0000 - 0x78b5e000    C:\WINDOWS\system32\MSVCR100.dll
0x02f50000 - 0x02f88000    C:\Program Files\ImageMagick-6.6.5-Q16\CORE_RL_lcms_.dll
0x02fa0000 - 0x02ffd000    C:\Program Files\ImageMagick-6.6.5-Q16\CORE_RL_ttf_.dll
0x03010000 - 0x03023000    C:\Program Files\ImageMagick-6.6.5-Q16\CORE_RL_zlib_.dll
0x72880000 - 0x7288d000    C:\Program Files\ImageMagick-6.6.5-Q16\VCOMP100.DLL
...

[/code]
So, I don't know why I have this error, maybe it's a problem of software version installed ?

Any help would appreciate.

我找了很多,有一篇帖子也说是JDK1.5以上版本均不支持,使用JDK1.4错误仍然出现,求JavaEye哥哥姐姐帮助,小弟不胜感激。

  • 写回答

3条回答 默认 最新

  • iihero 《SybaseASE15.X全程实践》书籍作者 2011-05-11 17:31
    关注

    readme 里头写的很清楚啊:

    q8 contains jmagick.dll compiled against ImageMagick 6.2.9-Q8
    http://www.imagemagick.org/download/binaries/ImageMagick-6.2.9-4-Q8-windows-dll.exe

    q16 contains jmagick.dll compiled against ImageMagick 6.2.9-Q16
    http://www.imagemagick.org/download/binaries/ImageMagick-6.2.9-4-Q16-windows-dll.exe

    It was built with gcc mingw 3.4.2 on Windows 2000 and Sun JDK 1.5.0 release 5.

    Getting Started:

    1. Install ImageMagick
    2. Copy the jmagick.dll corresponding with the Q8 or Q16 ImageMagick you installed to somewhere in your PATH. I would put it in the same directory as ImageMagick.
    3. Put jmagick.jar in your java classpath. If you are using Tomcat, or other java applications which have their own classloaders, move the jar up to a more global scope. If you had placed the jar in WEB-INF/lib and reload the webapp, java will attempt to reload jmagick.dll twice, and it will fail. By moving the jar up, the library will only be loaded once per jvm lifetime. I place mine in %JAVA_HOME%\jre\lib\ext.

    用jdk15就行了。复制jar_15下的jar文件到\jre\lib\ext,dll根据你安装的是Q8还是Q16选择不同的dll。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 解决一个加好友限制问题 或者有好的方案
  • ¥15 关于#java#的问题,请各位专家解答!
  • ¥15 急matlab编程仿真二阶震荡系统
  • ¥20 TEC-9的数据通路实验
  • ¥15 ue5 .3之前好好的现在只要是激活关卡就会崩溃
  • ¥50 MATLAB实现圆柱体容器内球形颗粒堆积
  • ¥15 python如何将动态的多个子列表,拼接后进行集合的交集
  • ¥20 vitis-ai量化基于pytorch框架下的yolov5模型
  • ¥15 如何实现H5在QQ平台上的二次分享卡片效果?
  • ¥30 求解达问题(有红包)