그냥 자바에서 초보자부터 시작하겠습니다.자바 애플릿에 오류가 발생했습니다. java.lang.reflect.InvocationTargetException
다음은 필자의 애플릿 코드입니다 (주의 : CallApplet.java는 검사되지 않거나 안전하지 않은 작업을 사용합니다.) 참고 : 오류가없는 경우 -Xlint를 사용하여 다시 컴파일하십시오. 난 자바 스크립트를 통해 mprintt 메서드를 호출 할 때
UPDATE
나는이 오류가 발생합니다. 보시다시피 DLL 인스턴스를 호출하려고합니다. 모두 내가 정의 열 프린터 DLL을로드 jna.jar 사용하고 볼 수 있듯이
import javax.swing.*;
import javax.print.*;
import java.util.ArrayList;
import com.sun.jna.Library;
import com.sun.jna.Native;
import java.awt.print.*;
import java.security.*;
public class CallApplet extends JApplet {
JTextField output;
public void init() {
output = new JTextField(20);
add(output);
validate();
}
public void setMessage(String message) {
output.setText(message);
}
public String getPrinters() {
PrintService[] printServices = PrintServiceLookup.lookupPrintServices(null, null);
ArrayList<String> myStringArray = new ArrayList<String>();
String s = new String();
int i = 0;
for (PrintService printer : printServices) {
myStringArray.add(printer.getName());
if (i > 0) {
s = s + ",";
}
s = s + "\"" + printer.getName() + "\"";
i++;
}
s = "[" + s + "]";
String[] simpleArray = new String[ myStringArray.size() ];
myStringArray.toArray(simpleArray);
return s;
}
public void jPrint(String printer) {
if (printer.length() <= 0) {
return;
}
//output.setText(printer);
//TcsPrint tcsPrinter = new TcsPrint();
//tcsPrinter.print(printer);
}
public interface TscLibDll extends Library {
TscLibDll INSTANCE = (TscLibDll) AccessController.doPrivileged(new PrivilegedAction() {
public Object run() {
return Native.loadLibrary ("TSCLIB", TscLibDll.class);
}
});
int about();
int openport (String pirnterName);
int closeport();
int sendcommand (String printerCommand);
int setup (String width,String height,String speed,String density,String sensor,String vertical,String offset);
int downloadpcx (String filename,String image_name);
int barcode (String x,String y,String type,String height,String readable,String rotation,String narrow,String wide,String code);
int printerfont (String x,String y,String fonttype,String rotation,String xmul,String ymul,String text);
int clearbuffer();
int printlabel (String set, String copy);
int formfeed();
int nobackfeed();
int windowsfont (int x, int y, int fontheight, int rotation, int fontstyle, int fontunderline, String szFaceName, String content);
}
public void mprintt(String printer) {
TscLibDll.INSTANCE.openport(printer);
TscLibDll.INSTANCE.sendcommand("REM ***** This is a test by JAVA. *****");
TscLibDll.INSTANCE.setup("35", "15", "3", "8", "0", "3", "-1");
TscLibDll.INSTANCE.clearbuffer();
TscLibDll.INSTANCE.printerfont ("290", "8", "3", "0", "1", "1", "ARTICLE NO");
TscLibDll.INSTANCE.barcode("290", "35", "128", "50", "1", "0", "2", "2", "123456789");
TscLibDll.INSTANCE.printlabel("1", "1");
TscLibDll.INSTANCE.closeport();
}
}
다음은 내 HTML
<html>
<body>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script type='text/javascript'>
var printers;
function selectPrinter()
{
applet = document.getElementById('output');
printers = applet.getPrinters();
}
</script>
<br>
<applet
id='output'
code='CallApplet.class'
archive='.,./jna.jar'
width=100
height=100>
</applet>
<input type="button" onclick="selectPrinter()" value="Show Printers" /> <input type="button" onclick="goPrint" value="Print" />
<select name="printers">
</select>
dsdsdg
</body>
</html>
입니다.
"java.lang.reflect.InvocationTargetException"오류가 발생했습니다. 필자는 애플릿과 jna의 합병증이 너무 많다고 생각합니다.
이 문제를 극복하고이 애플릿을이 DLL을 통해 인쇄하는 방법을 알려주십시오.
mprintt 메서드를 호출 할 때이 오류가 발생합니다. 보시다시피 DLL 인스턴스를 호출하려고합니다. – Sudesh