Ошибка компиляции android zxing release not debug

#android #release #zxing

#Android #выпуск #zxing

Вопрос:

Я не понимаю, почему эта ошибка. Я компилировал на другом компьютере, и компиляция релиза прошла нормально, но на этом компьютере я получаю :

 Relying on packaging to define the extension of the main artifact has been deprecated and is scheduled to be removed in Gradle 2.0
:app:preBuild
:app:preReleaseBuild
:app:checkReleaseManifest
:app:preDebugBuild
:app:prepareComAndroidSupportAppcompatV71910Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServices4323Library UP-TO-DATE
:app:prepareReleaseDependencies
:app:compileReleaseAidl
:app:compileReleaseRenderscript
:app:generateReleaseBuildConfig
:app:mergeReleaseAssets
:app:processReleaseManifest
:app:crashlyticsCleanupResourcesRelease
:app:crashlyticsUploadStoredDeobsRelease
:app:crashlyticsGenerateResourcesRelease
:app:generateReleaseResValues UP-TO-DATE
:app:generateReleaseResources
:app:mergeReleaseResources
:app:processReleaseResources
:app:generateReleaseSources
:app:compileReleaseJava
/Users/wimha/wimhaAndroidApp/app/src/main/java/com/google/zxing/client/android/camera/AutoFocusManager.java:63: error: method executeOnExecutor in class AsyncTask<Params,Progress,Result> cannot be applied to given types;
      outstandingTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
                     ^
  required: Executor,CAP#1[]
  found: Executor
  reason: formal varargs element type CAP#1 is not accessible from class AutoFocusManager
  where Params,Progress,Result are type-variables:
    Params extends Object declared in class AsyncTask
    Progress extends Object declared in class AsyncTask
    Result extends Object declared in class AsyncTask
  where CAP#1 is a fresh type-variable:
    CAP#1 extends Object from capture of ?
/Users/wimha/wimhaAndroidApp/app/src/main/java/com/google/zxing/client/android/InactivityTimer.java:52: error: method executeOnExecutor in class AsyncTask<Params,Progress,Result> cannot be applied to given types;
    inactivityTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
                  ^
  required: Executor,CAP#1[]
  found: Executor
  reason: formal varargs element type CAP#1 is not accessible from class InactivityTimer
  where Params,Progress,Result are type-variables:
    Params extends Object declared in class AsyncTask
    Progress extends Object declared in class AsyncTask
    Result extends Object declared in class AsyncTask
  where CAP#1 is a fresh type-variable:
    CAP#1 extends Object from capture of ?
/Users/wimha/wimhaAndroidApp/app/src/main/java/com/google/zxing/client/android/share/AppPickerActivity.java:35: error: method executeOnExecutor in class AsyncTask<Params,Progress,Result> cannot be applied to given types;
    backgroundTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
                  ^
  required: Executor,CAP#1[]
  found: Executor
  reason: formal varargs element type CAP#1 is not accessible from class AppPickerActivity
  where Params,Progress,Result are type-variables:
    Params extends Object declared in class AsyncTask
    Progress extends Object declared in class AsyncTask
    Result extends Object declared in class AsyncTask
  where CAP#1 is a fresh type-variable:
    CAP#1 extends Object from capture of ?
3 errors
:app:compileReleaseJava FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:compileReleaseJava'.
> Compilation failed; see the compiler error output for details.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

Total time: 1 mins 56.213 secs
 

Есть идеи?

Ответ №1:

Вам не нужно удалять Java 8. Просто откройте «Структура проекта» (Ctrl alt shift s), выберите «Расположение SDK» и установите «Расположение JDK» в path, с JDK 7.

Ответ №2:

Удаление Java 8 решило проблему.

Как удалить JDK 1.8

Комментарии:

1. Использование Java 7 для компиляции было бы лучшим ответом, если вы хотите предложить использовать более подходящую версию Java…

Ответ №3:

Я решил, заменив анонимные объявления следующим образом

 private AsyncTask<?, ?, ?> outstaindingTask;
 

с фактическими типами:

 private AsyncTask<Object, Object, Object> outstandingTask;
 

Вы можете найти список типов для использования, просмотрев определение созданного класса, например, в случае AutoFocusManager :

 outstandingTask = new AutoFocusTask();
 

AutoFocusTask Класс объявлен как:

 private final class AutoFocusTask extends AsyncTask<Object,Object,Object>
 

Ответ №4:

Я не уверен, как вы компилируете этот код, но он корректен как код Java. Он отлично компилируется с помощью сборки Maven. Похоже, это ошибка в используемом вами компиляторе.

Комментарии:

1. Удаление Java 8 решило проблему. docs.oracle.com/javase/8/docs/technotes/guides/install /…