2012-07-08 84 views
0

我們有使用im4j包裝器編寫的照片客戶端程序來調用ImageMajick來處理照片。 的設置以及運行在Windows操作系統上,然而,當我們在Mac OSX上運行它,我們不斷收到以下異常im4j在Mac OSX上無法運行命令

org.im4java.core.InfoException: org.im4java.core.CommandException: java.io.IOException: Cannot run program "identify": error=2, No such file or directory 
    at org.im4java.core.Info.getBaseInfo(Info.java:201) 
    at org.im4java.core.Info.<init>(Info.java:96) 
    at tenw.photos.ImageTransformer.getImageInfo(ImageTransformer.java:474) 
    at tenw.photos.ImageTransformer.getCenterCoordinates(ImageTransformer.java:517) 
    at tenw.photos.ImageTransformer.cropCenter(ImageTransformer.java:157) 
    at tenw.photos.ImageTransformerTest.testCropCenter(ImageTransformerTest.java:32) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at junit.framework.TestCase.runTest(TestCase.java:154) 
    at junit.framework.TestCase.runBare(TestCase.java:127) 
    at junit.framework.TestResult$1.protect(TestResult.java:106) 
    at junit.framework.TestResult.runProtected(TestResult.java:124) 
    at junit.framework.TestResult.run(TestResult.java:109) 
    at junit.framework.TestCase.run(TestCase.java:118) 
    at junit.framework.TestSuite.runTest(TestSuite.java:208) 
    at junit.framework.TestSuite.run(TestSuite.java:203) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at org.apache.maven.surefire.junit.JUnitTestSet.execute(JUnitTestSet.java:96) 
    at org.apache.maven.surefire.junit.JUnit3Provider.executeTestSet(JUnit3Provider.java:117) 
    at org.apache.maven.surefire.junit.JUnit3Provider.invoke(JUnit3Provider.java:94) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:164) 
    at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:110) 
    at org.apache.maven.surefire.booter.SurefireStarter.invokeProvider(SurefireStarter.java:175) 
    at org.apache.maven.surefire.booter.SurefireStarter.runSuitesInProcessWhenForked(SurefireStarter.java:107) 
    at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:68) 
Caused by: org.im4java.core.CommandException: java.io.IOException: Cannot run program "identify": error=2, No such file or directory 
    at org.im4java.core.ImageCommand.run(ImageCommand.java:215) 
    at org.im4java.core.Info.getBaseInfo(Info.java:189) 
    ... 33 more 
Caused by: java.io.IOException: Cannot run program "identify": error=2, No such file or directory 
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:460) 
    at org.im4java.process.ProcessStarter.startProcess(ProcessStarter.java:407) 
    at org.im4java.process.ProcessStarter.run(ProcessStarter.java:312) 
    at org.im4java.core.ImageCommand.run(ImageCommand.java:211) 
    ... 34 more 
Caused by: java.io.IOException: error=2, No such file or directory 
    at java.lang.UNIXProcess.forkAndExec(Native Method) 
    at java.lang.UNIXProcess.<init>(UNIXProcess.java:53) 
    at java.lang.ProcessImpl.start(ProcessImpl.java:91) 
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:453) 

的命令找出在PATH變量中找到。 當在shell上執行相同的命令時,它可以正常工作。任何幫助非常感謝。

回答

0

得到這個工作我的設置路徑變量在eclipse的環境變量設置。有些人可以增強答案,爲什麼JVM在執行命令之前無法拾取路徑變量

+0

我也面臨同樣的問題。你能告訴我你在eclipse'e環境變量中究竟添加了什麼嗎? – tuk 2016-05-23 14:41:42