2011-08-05 9 views
0

私はJTwainライブラリで少しのテストをしています。私はスキャン機能をDjango Appにアタッチする必要があります。私はローカルで実行される少しのコードを持っていますが、アプレットで動作させることはできません。EclipseでJTwainアプレットを作成する

デモアプレットを実行しようとしています。私はEclipse 'runable jar'を作成しました(クラスの1つにダミーのMainを追加しなければなりませんでした)。以下は

java.security.AccessControlException: access denied (java.lang.RuntimePermission loadLibrary.AspriseJTwain) 
    at java.security.AccessControlContext.checkPermission(Unknown Source) 
    at java.security.AccessController.checkPermission(Unknown Source) 
    at java.lang.SecurityManager.checkPermission(Unknown Source) 
    at java.lang.SecurityManager.checkLink(Unknown Source) 
    at java.lang.Runtime.loadLibrary0(Unknown Source) 
    at java.lang.System.loadLibrary(Unknown Source) 
    at com.asprise.util.jtwain.SourceManager.init(SourceManager.java:222) 
    at com.asprise.util.jtwain.SourceManager.<init>(SourceManager.java:36) 
    at com.asprise.util.jtwain.SourceManager.instance(SourceManager.java:28) 
    at JTwainApplet.scan(JTwainApplet.java:39) 
    at JTwainApplet.init(JTwainApplet.java:69) 
    at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source) 
    at java.lang.Thread.run(Unknown Source) 
java.lang.UnsatisfiedLinkError: com.asprise.util.jtwain.lowlevel.Control.performAction(ILjava/lang/Object;)Z 
    at com.asprise.util.jtwain.lowlevel.Control.performAction(Native Method) 
    at com.asprise.util.jtwain.lowlevel.Control.unloadSourceManager(Control.java:93) 
    at com.asprise.util.jtwain.SourceManager.closeSourceManager(SourceManager.java:120) 
    at JTwainApplet.scan(JTwainApplet.java:57) 
    at JTwainApplet.init(JTwainApplet.java:69) 
    at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source) 
    at java.lang.Thread.run(Unknown Source) 
Scan 

は、私が作成した瓶の構造である - 私は、ブラウザでページを読み込むとき、私はプラグインのコンソールから次の出力を取得しています。

C:\PythonProjects\CacheProject\media\java>jar tf demo.jar 
META-INF/MANIFEST.MF 
JTwainApplet.class 
ImageDisplayer$1.class 
ImageDisplayer.class 
META-INF/ 
META-INF/ASPRISE.DSA 
com/ 
com/asprise/ 
com/asprise/util/ 
com/asprise/util/jtwain/ 
com/asprise/util/jtwain/ImageGenerator.class 
com/asprise/util/jtwain/InvalidStateException.class 
com/asprise/util/jtwain/JTwainConstants.class 
com/asprise/util/jtwain/JTwainException.class 
com/asprise/util/jtwain/OperationException.class 
com/asprise/util/jtwain/Source.class 
com/asprise/util/jtwain/SourceManager.class 
com/asprise/util/jtwain/lowlevel/ 
com/asprise/util/jtwain/lowlevel/Capability.class 
com/asprise/util/jtwain/lowlevel/Control.class 
com/asprise/util/jtwain/lowlevel/DataType.class 
com/asprise/util/jtwain/lowlevel/DataTypeIdentity.class 
com/asprise/util/jtwain/lowlevel/DataTypeImageInfo.class 
com/asprise/util/jtwain/lowlevel/DataTypeImageLayout.class 
com/asprise/util/jtwain/lowlevel/DataTypeVersion.class 
com/asprise/util/jtwain/lowlevel/ItemType.class 
com/asprise/util/jtwain/lowlevel/ItemTypeFix32.class 
com/asprise/util/jtwain/lowlevel/ItemTypeFrame.class 
com/asprise/util/jtwain/lowlevel/ItemTypeInteger.class 
com/asprise/util/jtwain/lowlevel/ItemTypeString.class 
com/asprise/util/jtwain/lowlevel/OperationResult.class 
com/asprise/util/jtwain/lowlevel/ValueContainer.class 
com/asprise/util/jtwain/lowlevel/ValueContainerArray.class 
com/asprise/util/jtwain/lowlevel/ValueContainerEnumeration.class 
com/asprise/util/jtwain/lowlevel/ValueContainerOneValue.class 
com/asprise/util/jtwain/lowlevel/ValueContainerRange.class 
com/asprise/util/jtwain/web/ 
com/asprise/util/jtwain/web/FileUploader.class 
com/asprise/util/jtwain/web/ImageDisplayPanel.class 
com/asprise/util/jtwain/web/UploadApplet.class 
com/asprise/util/jtwain/web/UploadApplet_buttonCheckJTwain_actionAdapter.class 
com/asprise/util/jtwain/web/UploadApplet_buttonInstallJVM_actionAdapter.class 
com/asprise/util/jtwain/web/UploadApplet_buttonScan_actionAdapter.class 
com/asprise/util/jtwain/web/UploadApplet_buttonUpload_actionAdapter.class 
com/asprise/util/jtwain/web/UploadApplet_labelURL_mouseAdapter.class 
com/asprise/util/jtwain/web/UploadApplet_useProxy_actionAdapter.class 

そしてここでは、コードは任意の提案がgreatfully受け取ったことになるJTwainApplet

import java.applet.Applet; 
import java.awt.HeadlessException; 
import java.awt.Image; 

import com.asprise.util.jtwain.Source; 
import com.asprise.util.jtwain.SourceManager; 

/* 
* $Id$ 
* 
*/ 

/** 
* @author JACK (Jan 19, 2004) 
*/ 
public class JTwainApplet extends Applet { 

    /** 
    * @throws java.awt.HeadlessException 
    */ 
    public JTwainApplet() throws HeadlessException { 
     super(); 
     // TODO Auto-generated constructor stub 
    } 

    public static void main(String[] args) { 
    } 
    /* (non-Javadoc) 
    * @see java.applet.Applet#destroy() 
    */ 
    public void destroy() { 
     // TODO Auto-generated method stub 
     super.destroy(); 
    } 

    public void scan() { 
      try { 
       // SourceManager.setLibraryPath("E:\\Twain\\Asprise\\JT\\Debug\\JT.dll"); 
       Source source = SourceManager.instance().getDefaultSource(); 

       if(source == null) { 
        System.err.println("There is no (default) source on the system!"); 
        return; 
       } 

       source.open(); 

       Image image = source.acquireImage(); 

       new ImageDisplayer("DemoSimple", image); 

       source.close(); 

      }catch(Exception e) { 
       e.printStackTrace(); 
      }finally{ 
       SourceManager.closeSourceManager(); 
      } 
    } 

    /* (non-Javadoc) 
    * @see java.applet.Applet#init() 
    */ 
    public void init() { 
     super.init(); 

     System.out.println("Init."); 

     scan(); 

     System.out.println("Scan"); 
    } 

    /* (non-Javadoc) 
    * @see java.applet.Applet#start() 
    */ 
    public void start() { 
     // TODO Auto-generated method stub 
     super.start(); 
    } 

    /* (non-Javadoc) 
    * @see java.applet.Applet#stop() 
    */ 
    public void stop() { 
     // TODO Auto-generated method stub 
     super.stop(); 
    } 

} 

最後に私のjnplとhtmlソース

<?xml version="1.0" encoding="UTF-8"?> 
<jnlp spec="1.0+" codebase="" href=""> 
    <information> 
     <title>Cache Scanning</title> 
     <vendor>Altcom</vendor> 
    </information> 
    <resources> 
     <!-- Application Resources --> 
     <j2se version="1.6+" 
       href="http://java.sun.com/products/autodl/j2se" /> 
     <jar href="http://127.0.0.1:18123/media/java/demo.jar" main="true" /> 
    </resources> 
    <applet-desc 
     name="JTwain Applet Demo" 
     main-class="JTwainApplet" 
     width="500" 
     height="200"> 
    </applet-desc> 
    <update check="background"/> 
</jnlp> 



    **javascript** - 
<script src="http://java.com/js/deployJava.js"></script>  
    <script> 
     var attributes = { code: "http://127.0.0.1:18123/media/java/demo.jar", width:500, height:200} ; 
     var parameters = {jnlp_href: "http://127.0.0.1:18123/media/java/demo.jnlp"} ; 
     deployJava.runApplet(attributes, parameters, '1.6'); 
    </script> 

のためです。これは私をナットにしている。

+2

明らかな質問ですが、JARに署名しましたか? – Perception

+1

はい、com.aspriseクラスだけでなく、完全に署名された署名付きjarが必要です。また、JTwainがロードしようとするライブラリは、jarファイルに含まれているか(AFAIKSではない)、またはシステム/ JREにすでにインストールされている必要があります。 –

+0

はい、それは私がすべてのジャーに署名しなかった問題でした。最後に、私は書いたクラスだけでjarを作成し(署名し)、jnplを使って他のjarファイルを作成しました(そのうち1人は署名が必要でした)。入力いただきありがとうございます。 –

答えて

1

[OK]これは私がそれを動作させる方法です。私はEclipseで 'create runnable jar'オプションの使用をやめ、 'jar作成'オプションを使用しました。私は他の瓶(JTwainなど)を参考にしました(私の瓶に盛り込んでみてください)。

MANIFEST.MF

Manifest-Version: 1.0 
Class-Path: JTwain.jar plugin.jar AspriseJavaPDF.jar 

私は私のメディアフォルダに他のjarファイルを追加し、jnplを使用してそれらを務めた -

<resources> 
     <!-- Application Resources --> 
     <j2se version="1.6+" 
       href="http://java.sun.com/products/autodl/j2se" /> 
     <jar href="http://127.0.0.1:18123/media/java/CacheScan.jar" main="true" /> 
     <jar href="http://127.0.0.1:18123/media/java/JTwain.jar" /> 
     <jar href="http://127.0.0.1:18123/media/java/AspriseJavaPDF.jar" /> 
     <jar href="http://127.0.0.1:18123/media/java/plugin.jar" /> 
</resources> 

最後に、私は(私との両方をすべて符号なしのjarファイルに署名しましたAspriseJavaPDF.jar)。私はEclipseの外でこれをやった。 http://download.oracle.com/javase/tutorial/deployment/jar/signindex.html

署名されたJarsを持つことは、上記のコメントのPerception & Paulo Ebermannのおかげで問題でした。これは誰かに役立つことを願っています。

関連する問題