получаю ошибку: CreateProcess error = 2, система не может найти указанный файл - PullRequest
0 голосов
/ 25 марта 2019

Я получаю ошибку:

Исключение времени выполнения e = java.io.IOException: не удается запустить программу "pcsc.SCardTransmit (cardHandle,": ошибка CreateProcess = 2, система не может найти указанный файл

См. Код ниже. Кто-нибудь знает, как я должен создать команду, используемую в операторе Runtime?

//Code snippet showing the command that causes the message
String command = "pcsc.SCardTransmit(cardHandle, cmd);";
Process process = null;
try {
    process = Runtime.getRuntime().exec(command);
}
catch(Exception e){
    System.out.println("\n\nRuntime Exception e = "+e);
}
ProcessWithTimeout processWithTimeout = new ProcessWithTimeout(process);
int exitCode = processWithTimeout.waitForProcess(5000);

System.out.println("\n\nexitCode = "+exitCode);

if (exitCode == Integer.MIN_VALUE) {
    // Timeout
    System.out.println("\n\nTimeout on SCardTransmit");
    throw new PcscException("SCARD_E_TIMEOUT",0x8010000A);
}
else {
    // No timeout !
}

//The methods called out by the code snippet above
public class ProcessWithTimeout extends Thread
{
    private Process m_process;
    private int m_exitCode = Integer.MIN_VALUE;

    public ProcessWithTimeout(Process p_process)
    {
        m_process = p_process;
    }

    public int waitForProcess(int p_timeoutMilliseconds)
    {
        this.start();

        try
        {
            this.join(p_timeoutMilliseconds);
        }
        catch (InterruptedException e)
        {
            this.interrupt();
        }

        return m_exitCode;
    }

    @Override
    public void run()
    {
        try
        { 
            m_exitCode = m_process.waitFor();
        }
        catch (InterruptedException ignore)
        {
            // Do nothing
        }
        catch (Exception ex)
        {
            // Unexpected exception
        }
    }
}
...