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 cgictest.cgi文件无法访问
  • ¥20 删除和修改功能无法调用
  • ¥15 kafka topic 所有分副本数修改
  • ¥15 小程序中fit格式等运动数据文件怎样实现可视化?(包含心率信息))
  • ¥15 如何利用mmdetection3d中的get_flops.py文件计算fcos3d方法的flops?
  • ¥40 串口调试助手打开串口后,keil5的代码就停止了
  • ¥15 电脑最近经常蓝屏,求大家看看哪的问题
  • ¥60 高价有偿求java辅导。工程量较大,价格你定,联系确定辅导后将采纳你的答案。希望能给出完整详细代码,并能解释回答我关于代码的疑问疑问,代码要求如下,联系我会发文档
  • ¥50 C++五子棋AI程序编写
  • ¥30 求安卓设备利用一个typeC接口,同时实现向pc一边投屏一边上传数据的解决方案。