harwey / cups4j

Cups4j Java printing library for CUPS/IPP
http://cups4j.org
GNU Lesser General Public License v3.0
130 stars 64 forks source link

There seems to be a version conflict issue with the pache HttpClient library. #75

Open shinxxxxwon opened 11 months ago

shinxxxxwon commented 11 months ago

I'm trying to use Cups4j-0.7.9.

implementation group: 'org.cups4j', name: 'cups4j', version: '0.7.9'

Now connect the client and get information about printers.

private class PrintTask extends AsyncTask<Void, Void, PrintRequestResult> {
        @Override
        protected PrintRequestResult doInBackground(Void... params) {
            try {
                CupsClient cupsClient = new CupsClient("myIP", 631);
                List<CupsPrinter> printers = cupsClient.getPrinters();
                for (CupsPrinter printer : printers) {
                    System.out.println("Printer Name: " + printer.getName());
                }
            } catch (IOException e) {
                Log.e("PrintError", "Error while reading file or communicating with the printer : ", e);
                e.printStackTrace();
            } catch (Exception e) {
                Log.e("PrintError", "Error : ", e);
                e.printStackTrace();
            }

            return null;
        }

        @Override
        protected void onPostExecute(PrintRequestResult result) {
            if (result != null && result.isSuccessfulResult()) {
                Log.d("PrintSuccess", "Print job submitted successfully!");
            } else {
                Log.e("PrintError", "Print job failed: " + (result != null ? result.getResultMessage() : "Unknown error"));
            }
        }
    }

However, a problem occurs when the app dies when running. The place where it dies is List<CupsPrinter> printers = cupsClient.getPrinters();.

The error message is:

E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #1
    Process: com.example.wifidir, PID: 31309
    java.lang.RuntimeException: An error occurred while executing doInBackground()
        at android.os.AsyncTask$4.done(AsyncTask.java:415)
        at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:383)
        at java.util.concurrent.FutureTask.setException(FutureTask.java:252)
        at java.util.concurrent.FutureTask.run(FutureTask.java:271)
        at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:305)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
        at java.lang.Thread.run(Thread.java:923)
     Caused by: java.lang.NoSuchFieldError: No static field INSTANCE of type Lorg/apache/http/conn/ssl/AllowAllHostnameVerifier; in class Lorg/apache/http/conn/ssl/AllowAllHostnameVerifier; or its superclasses (declaration of 'org.apache.http.conn.ssl.AllowAllHostnameVerifier' appears in /system/framework/framework.jar!classes5.dex)
        at org.apache.http.conn.ssl.SSLConnectionSocketFactory.<clinit>(SSLConnectionSocketFactory.java:151)
        at org.apache.http.impl.client.HttpClientBuilder.build(HttpClientBuilder.java:977)
        at org.cups4j.operations.IppHttp.<clinit>(IppHttp.java:33)
        at org.cups4j.operations.IppHttp.createHttpClient(IppHttp.java:39)
        at org.cups4j.operations.IppOperation.sendRequest(IppOperation.java:157)
        at org.cups4j.operations.IppOperation.sendRequest(IppOperation.java:130)
        at org.cups4j.operations.IppOperation.request(IppOperation.java:64)
        at org.cups4j.operations.cups.CupsGetPrintersOperation.getPrinters(CupsGetPrintersOperation.java:59)
        at org.cups4j.CupsClient.getPrinters(CupsClient.java:138)
        at com.example.wifidir.MainActivity$PrintTask.doInBackground(MainActivity.java:55)
        at com.example.wifidir.MainActivity$PrintTask.doInBackground(MainActivity.java:50)
        at android.os.AsyncTask$3.call(AsyncTask.java:394)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:305) 
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) 
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) 
        at java.lang.Thread.run(Thread.java:923) 

Is there any way to solve this problem??