将javax.smartcardio添加到项目时出现Java生成错误

将javax.smartcardio添加到项目时出现Java生成错误,java,eclipse,maven,build,smartcard,Java,Eclipse,Maven,Build,Smartcard,我正在尝试向我们的一个应用程序中添加一些简单的智能卡读卡器功能,但我一直遇到一个无法解决的构建错误,因此我正在寻找输入或任何可以帮助我在新类中导入javax.smartcardio后编译项目的建议 我最初创建了一个简单的类,其中包含一个字符串解析方法和一个main方法。作为一个独立的项目,我可以在没有错误的情况下运行该类,并且读卡器和卡的所有预期信息都会按预期通过System.out打印到控制台,因此我认为我从这个早期测试项目中带到我的项目中的代码没有任何问题 但是现在我已经将smartcard

我正在尝试向我们的一个应用程序中添加一些简单的智能卡读卡器功能,但我一直遇到一个无法解决的构建错误,因此我正在寻找输入或任何可以帮助我在新类中导入javax.smartcardio后编译项目的建议

我最初创建了一个简单的类,其中包含一个字符串解析方法和一个main方法。作为一个独立的项目,我可以在没有错误的情况下运行该类,并且读卡器和卡的所有预期信息都会按预期通过System.out打印到控制台,因此我认为我从这个早期测试项目中带到我的项目中的代码没有任何问题

但是现在我已经将smartcardio导入到新类中,我的项目将无法编译。我已经尝试过删除和重新添加JRE系统库,正如在这里的其他几篇文章中所建议的那样,但我认为这可能是一个不同的问题。编译时,编译器似乎无法识别或找不到rt.jar,尽管我反复检查过,并且jar在JRE文件夹中

这里的错误,任何帮助是高度赞赏的。如果需要更多信息,请告诉我

[INFO] --- maven-antrun-plugin:1.7:run (compilegwt) @ hwslqc ---
[INFO] Executing tasks

main:
     [echo] GWT compilation: hwslqc
     [java] Compiling module com.prusa.hwslqc.hwslqc
     [java]    [ERROR] An internal compiler exception occurred
     [java] com.google.gwt.dev.jjs.InternalCompilerException: Failed to get JNode
     [java]     at com.google.gwt.dev.jjs.impl.TypeMap.get(TypeMap.java:140)
     [java]     at com.google.gwt.dev.jjs.impl.TypeMap.get(TypeMap.java:71)
     [java]     at com.google.gwt.dev.jjs.impl.BuildTypeMap.getType(BuildTypeMap.java:730)
     [java]     at com.google.gwt.dev.jjs.impl.BuildTypeMap.access$000(BuildTypeMap.java:99)
     [java]     at com.google.gwt.dev.jjs.impl.BuildTypeMap$BuildDeclMapVisitor.visit(BuildTypeMap.java:195)
     [java]     at org.eclipse.jdt.internal.compiler.ast.LocalDeclaration.traverse(LocalDeclaration.java:237)
     [java]     at org.eclipse.jdt.internal.compiler.ast.Block.traverse(Block.java:127)
     [java]     at org.eclipse.jdt.internal.compiler.ast.TryStatement.traverse(TryStatement.java:853)
     [java]     at org.eclipse.jdt.internal.compiler.ast.MethodDeclaration.traverse(MethodDeclaration.java:239)
     [java]     at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.traverse(TypeDeclaration.java:1239)
     [java]     at org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration.traverse(CompilationUnitDeclaration.java:687)
     [java]     at com.google.gwt.dev.jjs.impl.BuildTypeMap.createPeersForNonTypeDecls(BuildTypeMap.java:637)
     [java]     at com.google.gwt.dev.jjs.impl.BuildTypeMap.exec(BuildTypeMap.java:514)
     [java]     at com.google.gwt.dev.jjs.impl.BuildTypeMap.exec(BuildTypeMap.java:523)
     [java]     at com.google.gwt.dev.jjs.JavaToJavaScriptCompiler.precompile(JavaToJavaScriptCompiler.java:599)
     [java]     at com.google.gwt.dev.jjs.JavaScriptCompiler.precompile(JavaScriptCompiler.java:33)
     [java]     at com.google.gwt.dev.Precompile.precompile(Precompile.java:284)
     [java]     at com.google.gwt.dev.Precompile.precompile(Precompile.java:233)
     [java]     at com.google.gwt.dev.Precompile.precompile(Precompile.java:145)
     [java]     at com.google.gwt.dev.Compiler.run(Compiler.java:232)
     [java]     at com.google.gwt.dev.Compiler.run(Compiler.java:198)
     [java]     at com.google.gwt.dev.Compiler$1.run(Compiler.java:170)
     [java]     at com.google.gwt.dev.CompileTaskRunner.doRun(CompileTaskRunner.java:88)
     [java]     at com.google.gwt.dev.CompileTaskRunner.runWithAppropriateLogger(CompileTaskRunner.java:82)
     [java]     at com.google.gwt.dev.Compiler.main(Compiler.java:177)
     [java]       [ERROR] <no source info>: public final class javax.smartcardio.TerminalFactory
     [java]     extends java.lang.Object
     [java] /*   fields   */
     [java] private static final [unresolved] java.lang.String PROP_NAME
     [java] private static final [unresolved] java.lang.String defaultType
     [java] private static final [unresolved] javax.smartcardio.TerminalFactory defaultFactory
     [java] private final [unresolved] Unresolved type javax.smartcardio.TerminalFactorySpi spi
     [java] private final [unresolved] Unresolved type java.security.Provider provider
     [java] private final [unresolved] java.lang.String type
     [java] /*   methods   */
     [java] [unresolved] private void <init>(Unresolved type javax.smartcardio.TerminalFactorySpi, Unresolved type java.security.Provider, java.lang.String) 
     [java] public static javax.smartcardio.TerminalFactory getDefault() 
     [java] [unresolved] public static java.lang.String getDefaultType() 
     [java] [unresolved] public static javax.smartcardio.TerminalFactory getInstance(java.lang.String, java.lang.Object) throws java.security.NoSuchAlgorithmException
     [java] [unresolved] public static javax.smartcardio.TerminalFactory getInstance(java.lang.String, java.lang.Object, java.lang.String) throws java.security.NoSuchAlgorithmException, Unresolved type java.security.NoSuchProviderException
     [java] [unresolved] public static javax.smartcardio.TerminalFactory getInstance(java.lang.String, java.lang.Object, Unresolved type java.security.Provider) throws java.security.NoSuchAlgorithmException
     [java] [unresolved] public Unresolved type java.security.Provider getProvider() 
     [java] [unresolved] public java.lang.String getType() 
     [java] public javax.smartcardio.CardTerminals terminals() 
     [java] [unresolved] public java.lang.String toString() 
     [java] /*   members   */
     [java] Unresolved type javax.smartcardio.TerminalFactory$NoneCardTerminals
     [java] Unresolved type javax.smartcardio.TerminalFactory$NoneFactorySpi
     [java] Unresolved type javax.smartcardio.TerminalFactory$NoneProvider
     [java] 
     [java] 
     [java] 
     [java]       [ERROR] at SwipeCardUtil.java(48): TerminalFactory factory = TerminalFactory.getDefault();
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 38.721s
[INFO]——maven antrun插件:1.7:run(compilegwt)@hwslqc---
[信息]执行任务
主要内容:
[echo]GWT编译:hwslqc
[java]编译模块com.prusa.hwslqc.hwslqc
[java][错误]发生内部编译器异常
[java]com.google.gwt.dev.jjs.InternalCompilerException:获取JNode失败
[java]位于com.google.gwt.dev.jjs.impl.TypeMap.get(TypeMap.java:140)
[java]位于com.google.gwt.dev.jjs.impl.TypeMap.get(TypeMap.java:71)
[java]位于com.google.gwt.dev.jjs.impl.BuildTypeMap.getType(BuildTypeMap.java:730)
[java]位于com.google.gwt.dev.jjs.impl.BuildTypeMap.access$000(BuildTypeMap.java:99)
[java]位于com.google.gwt.dev.jjs.impl.BuildTypeMap$BuildDeclMapVisitor.visit(BuildTypeMap.java:195)
[java]位于org.eclipse.jdt.internal.compiler.ast.LocalDeclaration.traverse(LocalDeclaration.java:237)
[java]位于org.eclipse.jdt.internal.compiler.ast.Block.traverse(Block.java:127)
[java]位于org.eclipse.jdt.internal.compiler.ast.TryStatement.traverse(TryStatement.java:853)
[java]位于org.eclipse.jdt.internal.compiler.ast.MethodDeclaration.traverse(MethodDeclaration.java:239)
[java]位于org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.traverse(TypeDeclaration.java:1239)
[java]位于org.eclipse.jdt.internal.compiler.ast.CompileationUnitDeclaration.traverse(compileationUnitDeclaration.java:687)
[java]位于com.google.gwt.dev.jjs.impl.BuildTypeMap.createPeersForNonTypeDecls(BuildTypeMap.java:637)
[java]位于com.google.gwt.dev.jjs.impl.BuildTypeMap.exec(BuildTypeMap.java:514)
[java]位于com.google.gwt.dev.jjs.impl.BuildTypeMap.exec(BuildTypeMap.java:523)
[java]位于com.google.gwt.dev.jjs.JavaToJavaScriptCompiler.precompile(JavaToJavaScriptCompiler.java:599)
[java]位于com.google.gwt.dev.jjs.JavaScriptCompiler.precompile(JavaScriptCompiler.java:33)
[java]位于com.google.gwt.dev.Precompile.Precompile(Precompile.java:284)
[java]位于com.google.gwt.dev.Precompile.Precompile(Precompile.java:233)
[java]位于com.google.gwt.dev.Precompile.Precompile(Precompile.java:145)
[java]位于com.google.gwt.dev.Compiler.run(Compiler.java:232)
[java]位于com.google.gwt.dev.Compiler.run(Compiler.java:198)
[java]位于com.google.gwt.dev.Compiler$1.run(Compiler.java:170)
[java]位于com.google.gwt.dev.CompileTaskRunner.doRun(CompileTaskRunner.java:88)
[java]位于com.google.gwt.dev.CompileTaskRunner.runwithpropertedlogger(CompileTaskRunner.java:82)
[java]位于com.google.gwt.dev.Compiler.main(Compiler.java:177)
[java][ERROR]:公共最终类javax.smartcardio.TerminalFactory
[java]扩展了java.lang.Object
[java]/*字段*/
[java]私有静态最终[unresolved]java.lang.String属性名称
[java]私有静态最终[unresolved]java.lang.String默认类型
[java]私有静态最终[unresolved]javax.smartcardio.TerminalFactory默认工厂
[java]私有最终[unresolved]未解析类型javax.smartcardio.TerminalFactorySpi
[java]私有最终[unresolved]未解析类型java.security.Provider提供程序
[java]私有最终[unresolved]java.lang.String类型
[java]/*方法*/
[java][unresolved]private void(未解析类型javax.smartcardio.TerminalFactorySpi,未解析类型java.security.Provider,java.lang.String)
[java]public static javax.smartcardio.TerminalFactory getDefault()
[java][unresolved]公共静态java.lang.String getDefaultType()
[java][unresolved]public static javax.smartcardio.TerminalFactory getInstance(java.lang.String,java.lang.Object)抛出java.security.NoSuchAlgorithmException
[java][unresolved]public static javax.smartcardio.TerminalFactory getInstance(java.lang.String、java.lang.Object、java.lang.String)抛出java.security.NoSuchAlgorithmException,未解析类型java.security.NoSuchProviderException
[java][unresolved]public static javax.smartcardio.TerminalFactory getInstance(java.lang.String,java.lang.Object,未解析类型java.security.Provider)抛出java.security.nosuchalgorithException
[java][unresolved]公共未解析类型java.security.Provider getProvider()
[java][unresolved]public java.lang.String getType()
[java]public javax.smartcardio.CardTerminals终端()
[java][unresolved]public java.lang.String-toString()
[java]/*成员*/
[java]未解析类型javax.smartcardio.TerminalFactory$NoneCardTerminals
[java]未解析类型javax.smartcardio.TerminalFactory$NoneFactorySpi
[java]未解析类型javax.smartcardio.Termi
package com.prusa.hwslqc.client.ui.util;

import java.util.List;

import javax.smartcardio.Card;
import javax.smartcardio.CardException;
import javax.smartcardio.CardTerminal;
import javax.smartcardio.TerminalFactory;



/**
 * @author SWESTF01
 *
 */
@SuppressWarnings("restriction")
public class SwipeCardUtil 
{

    /**
     * @param theBytes
     * @return theByteArray as a hex string
     */
    public static String byteArrayToHexString(byte[] theBytes)          
    {             
        StringBuffer sb = new StringBuffer(theBytes.length * 2);             

        for (int i = 0; i < theBytes.length; i++) 
        {               
            int byteRead = theBytes[i] & 0xff;               
            if (byteRead < 16) 
            {                 
                sb.append('0');               
            }               
            sb.append(Integer.toHexString(byteRead));          
        }             
        return sb.toString().toUpperCase();          
     }

    /**
     */
    @SuppressWarnings("restriction")
    public static void readCard()
    {                 
        try 
        {
            // Show the list of available terminals
            TerminalFactory factory = TerminalFactory.getDefault();

            List<CardTerminal> terminals = factory.terminals().list();
            if (terminals.size() == 0) {
                System.out.println("No terminals found.");
                return;
            }
            System.out.println("Terminal: " + terminals.get(0).getName());

            // Get the first terminal in the list
            CardTerminal terminal = terminals.get(0);
            boolean cardHasBeenRead = false;

            if(!terminal.isCardPresent())
            {
                System.out.println("Please insert a card.");
            }

            //8 hours = 28800000
            //1 day = 86400000
            while(terminal.waitForCardPresent(86400000))
            {

                if(!cardHasBeenRead)
                {
                    // Establish a connection with the card using
                    // "T=0", "T=1", "T=CL" or "*"
                    Card card = terminal.connect("*");

                    System.out.println("Card: " + card);

                    // Get ATR
                    byte[] baATR = card.getATR().getBytes();

                    System.out.println("ATR: " + SwipeCardUtil.byteArrayToHexString(baATR));

                    // Disconnect
                    // true: reset the card after disconnecting card.
                    card.disconnect(true);
                    cardHasBeenRead = true;
                }

                if(!terminal.isCardPresent())
                {
                    cardHasBeenRead = false;
                    System.out.println("Please insert a card.");
                }
             }
        } 
        catch (CardException ex) {
            System.out.println("Please connect a Card Reader and restart the program.");
            ex.printStackTrace();
        }
    } 
}