Эта ошибка возникла несколько раз в Stackoverflow, я буду ссылаться на другие вопросы в этом вопросе.
Мой проект - приложение для Android, использующее Android Maven Plugin, чтобы включать библиотеки, но также включая некоторые библиотеки локально, поскольку они не предоставляются через maven, Моя IDE - Eclipse. Я использовал этот учебник в основном для его настройки. Я новичок в maven.
Короче говоря, я не могу запустить приложение на своем телефоне. Когда я начинаю его, я получаю вышеуказанную письменную ошибку об активности, которая является моей начальной деятельностью под названием SubscriptionView
. Вся трассировка ошибок ниже:
07-17 15:47:42.170: E/AndroidRuntime(20071): FATAL EXCEPTION: main
07-17 15:47:42.170: E/AndroidRuntime(20071): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.dynamixsspbridge/com.example.dynamixsspbridge.SubscriptionView}: java.lang.ClassNotFoundException: com.example.dynamixsspbridge.SubscriptionView
07-17 15:47:42.170: E/AndroidRuntime(20071): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2034)
07-17 15:47:42.170: E/AndroidRuntime(20071): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2135)
07-17 15:47:42.170: E/AndroidRuntime(20071): at android.app.ActivityThread.access$700(ActivityThread.java:140)
07-17 15:47:42.170: E/AndroidRuntime(20071): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1237)
07-17 15:47:42.170: E/AndroidRuntime(20071): at android.os.Handler.dispatchMessage(Handler.java:99)
07-17 15:47:42.170: E/AndroidRuntime(20071): at android.os.Looper.loop(Looper.java:137)
07-17 15:47:42.170: E/AndroidRuntime(20071): at android.app.ActivityThread.main(ActivityThread.java:4921)
07-17 15:47:42.170: E/AndroidRuntime(20071): at java.lang.reflect.Method.invokeNative(Native Method)
07-17 15:47:42.170: E/AndroidRuntime(20071): at java.lang.reflect.Method.invoke(Method.java:511)
07-17 15:47:42.170: E/AndroidRuntime(20071): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1027)
07-17 15:47:42.170: E/AndroidRuntime(20071): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794)
07-17 15:47:42.170: E/AndroidRuntime(20071): at dalvik.system.NativeStart.main(Native Method)
07-17 15:47:42.170: E/AndroidRuntime(20071): Caused by: java.lang.ClassNotFoundException: com.example.dynamixsspbridge.SubscriptionView
07-17 15:47:42.170: E/AndroidRuntime(20071): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61)
07-17 15:47:42.170: E/AndroidRuntime(20071): at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
07-17 15:47:42.170: E/AndroidRuntime(20071): at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
07-17 15:47:42.170: E/AndroidRuntime(20071): at android.app.Instrumentation.newActivity(Instrumentation.java:1068)
07-17 15:47:42.170: E/AndroidRuntime(20071): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2025)
07-17 15:47:42.170: E/AndroidRuntime(20071): ... 11 more
Теперь для этого предлагается несколько решений:
- Проверяя, действительно ли вы экспортируете частные библиотеки, перейдите в "Путь сборки" → "Настроить путь сборки...". Закажите и экспортируйте ", установите флажок" Частные библиотеки Android ", надеясь на работу". У меня была эта опция, ошибка все равно произошла.
- Убедитесь, что ProGuard не убирает классы: Насколько я знаю, я не использую proguard. Из того, что я заглядываю, нужно активно использовать ProGuard, его не только там... Я этого не делал. (Он говорит: "Прогон ProGuard полностью опциональен" на сайте Android.) Я проверил мои проекты .properties и линию proguard прокомментировал.
- Не указывайте папку для ваших внешних библиотек
lib
, ноlibs
. Я сделал это для своих локальных библиотек. Библиотеки maven ofcourse живут везде, где их кладет Maven. Потенциально я мог бы взять все эти банки и вывести их из maven repo вlibs
... затем прекратить использование maven. Хотя это может сработать, вряд ли это решение. - Удалить Double Libs из пути сборки. Это более или менее та же проблема, описанная в 3. Хватит здесь, что "У вас нет разных версий одной библиотеки" . Известно, что некоторые библиотеки предоставляют другие библиотеки, поэтому вы можете быть в моей локальной папке и предоставляться одной из библиотек, добавленных через maven. Я включаю в себя две библиотеки локально, одна из них не является общедоступной, поэтому, если она предоставляется, это будет android-support-v4.jar. Я удалил банку, очистил проект и экспортировал его снова, никаких изменений.
- Были сделаны предложения, что на самом деле это проблема Eclipse. Перезапуск якобы может быть полезным, поэтому я сделал. Но безрезультатно. Я пробовал его с помощью и без удаления
bin
иgen
. - Ошибки правописания
- Использование m2e Plugin (уже делает это)
Другие идеи, которые не выделялись:
Версия Java: В том, что я чувствую, может быть ответственным за использование Java 1.5. Однако, хотя рекомендуется 1.6, 1.5 должен работать. Переход на 1.6 тоже ничего не меняет.
Библиотеки, входящие в состав Maven, не экспортируются /dexed: Еще одна проблема, которую я вижу, заключается в том, что Maven Dependnecies не отображаются в виде библиотек с расширением в папке bin/dexedLibs
. Хотя я считаю, что это будет проблемой в более позднее время, я удалил все классы, которые используют эти библиотеки из проекта, и ошибка остается.
Проблема явно связана с использованием Maven. Если я создаю новый проект, все будет хорошо работать, пока я не конвертирую проект в проект maven и не добавлю библиотеки через pom.xml
, даже если у меня нет классов, использующих какие-либо библиотеки.
EDIT Дальнейшее исследование: создав еще один новый проект и обнаружив, что при первом "правильном такте → configure → конвертировать в maven" ничего не импортируется даже после того, как я изменил pom.xml
. Затем я отключу maven nature, а затем "convert to maven" . Теперь все библиотеки импортируются и теперь происходит ошибка. Когда я включаю pom.xml
в проект, прежде чем преобразовать ту же ошибку.
Как ни странно, если я тогда "right click- > maven- > disable maven nature" и удалю все файлы и файлы maven, проблема остается.
Все это также происходит со свежим образцом проекта (только активность stanard и xml, созданный eclipse) после того, как я конвертирую в maven и maven libs в проект, поэтому он, по-видимому, не связан с моим кодом вообще...
pom.xml
выглядит следующим образом
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>DynamixSSPBridge</groupId>
<artifactId>DynamixSSPBridge</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>DynamixSSPBridge</name>
<properties>
<java-version>1.6</java-version>
</properties>
<repositories>
<repository>
<id>itm-maven-repository-releases-site</id>
<url>https://maven.itm.uni-luebeck.de/content/repositories/releases/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.google.android</groupId>
<artifactId>android</artifactId>
<version>2.3.3</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>de.uniluebeck.itm</groupId>
<artifactId>ncoap</artifactId>
<version>1.0.1</version>
</dependency>
</dependencies>
<build>
<finalName>${project.artifactId}</finalName>
<sourceDirectory>src</sourceDirectory>
<pluginManagement>
<plugins>
<plugin>
<groupId>com.jayway.maven.plugins.android.generation2</groupId>
<artifactId>android-maven-plugin</artifactId>
<version>3.1.1</version>
<extensions>true</extensions>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>com.jayway.maven.plugins.android.generation2</groupId>
<artifactId>android-maven-plugin</artifactId>
<configuration>
<sdk>
<platform>9</platform>
</sdk>
</configuration>
</plugin>
</plugins>
</build>
</project>
Еще одна идея заключалась в том, чтобы создать проект maven с определенным архетипом Android как описанный здесь. Однако это не работает, поскольку я всегда получаю ошибку "Невозможно создать проект из архетипа" (см. Рисунок). Создание проекта non android maven - еще одна неудачная попытка, поскольку он не является проектом андроида, он не разрешает ссылки R.x и не использует библиотеки dex...
Любые идеи?