Вопросы по тегу: java

(285)

Ошибка компиляции сборки Maven: не удалось выполнить цель org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (компиляция по умолчанию) в проекте Maven

У меня есть проект maven, разветвленный и клонированный из репозитория git на мое затмение. Он построен на Java 8. Первое, что я делаю, это выполняю mvn clean install Но я получаю следующее сообщение об ошибке:[INFO] Scanning for projects... [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building Maven 0.0.1-SNAPSHOT [INFO] ------------------------------------------------------------------------ [INFO] [INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ Maven --- [INFO] Deleting /Users/vshukla/git/Prism/target [INFO] [INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ Maven --- [WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent! [INFO] skip non existing resourceDirectory /Users/vshukla/git/Prism/src/main/resources [INFO] [INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ Maven --- [INFO] Changes detected - recompiling the module! [WARNING] File encoding has not been set, using platform encoding UTF-8, i.e. build is platform dependent! [INFO] Compiling 66 source files to /Users/vshukla/git/Prism/target/classes [INFO] ------------------------------------------------------------- [ERROR] COMPILATION ERROR : [INFO] ------------------------------------------------------------- [ERROR] /Users/vshukla/git/Prism/src/main/java/PrenPost/scanUtility.java:[54,52] diamond operator is not supported in -source 1.5 (use -source 7 or higher to enable diamond operator) [ERROR] /Users/vshukla/git/Prism/src/main/java/main/AppUtility.java:[87,86] diamond operator is not supported in -source 1.5 (use -source 7 or higher to enable diamond operator) [ERROR] /Users/vshukla/git/Prism/src/main/java/PrenPost/ComparisionUtility.java:[58,52] diamond operator is not supported in -source 1.5 (use -source 7 or higher to enable diamond operator) [INFO] 3 errors [INFO] ------------------------------------------------------------- [INFO] ------------------------------------------------------------------------ [INFO] BUILD FAILURE [INFO] ------------------------------------------------------------------------ [INFO] Total time: 1.266 s [INFO] Finished at: 2017-03-01T12:11:27+05:30 [INFO] Final Memory: 13M/309M [INFO] ------------------------------------------------------------------------ [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project Maven: Compilation failure: Compilation failure: [ERROR] /Users/vshukla/git/Prism/src/main/java/PrenPost/scanUtility.java:[54,52] diamond operator is not supported in -source 1.5 [ERROR] (use -source 7 or higher to enable diamond operator) [ERROR] /Users/vshukla/git/Prism/src/main/java/main/AppUtility.java:[87,86] diamond operator is not supported in -source 1.5 [ERROR] (use -source 7 or higher to enable diamond operator) [ERROR] /Users/vshukla/git/Prism/src/main/java/PrenPost/ComparisionUtility.java:[58,52] diamond operator is not supported in -source 1.5 [ERROR] (use -source 7 or higher to enable diamond operator) [ERROR] -> [Help 1] [ERROR] [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. [ERROR] Re-run Maven using the -X switch to enable full debug logging. [ERROR] [ERROR] For more information about the errors and possible solutions, please read the following articles: [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException Однако ниже приведены сведения о пути сборки проекта, в котором явно настроена JRE-8: и настройка компиляции:Независимо от того, сколько раз я собираю проект, я получаю ту же ошибку. Даже после очистки проекта и его обновления из eclipse не помогает. Пожалуйста, помогите.ОБНОВЛЕНИЕ:После добавления свойств для установки плагина компилятора maven 1.8 1.8 , получаю следующую ошибку:[INFO] Scanning for projects... [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building Maven 0.0.1-SNAPSHOT [INFO] ------------------------------------------------------------------------ [INFO] [INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ Maven --- [INFO] Deleting /Users/vshukla/git/Prism/target [INFO] [INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ Maven --- [WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent! [INFO] skip non existing resourceDirectory /Users/vshukla/git/Prism/src/main/resources [INFO] [INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ Maven --- [INFO] Changes detected - recompiling the module! [WARNING] File encoding has not been set, using platform encoding UTF-8, i.e. build is platform dependent! [INFO] Compiling 66 source files to /Users/vshukla/git/Prism/target/classes [INFO] ------------------------------------------------------------- [WARNING] COMPILATION WARNING : [INFO] ------------------------------------------------------------- [WARNING] /Users/vshukla/git/Prism/src/main/java/main/MainUITabbed.java: /Users/vshukla/git/Prism/src/main/java/main/MainUITabbed.java uses or overrides a deprecated API. [WARNING] /Users/vshukla/git/Prism/src/main/java/main/MainUITabbed.java: Recompile with -Xlint:deprecation for details. [WARNING] /Users/vshukla/git/Prism/src/main/java/main/MainUITabbed.java: Some input files use unchecked or unsafe operations. [WARNING] /Users/vshukla/git/Prism/src/main/java/main/MainUITabbed.java: Recompile with -Xlint:unchecked for details. [INFO] 4 warnings [INFO] ------------------------------------------------------------- [INFO] ------------------------------------------------------------- [ERROR] COMPILATION ERROR : [INFO] ------------------------------------------------------------- [ERROR] /Users/vshukla/git/Prism/src/main/java/main/MainUITabbed.java:[26,22] package com.apple.eawt does not exist [ERROR] /Users/vshukla/git/Prism/src/main/java/main/MainUITabbed.java:[93,41] cannot find symbol symbol: class Application [ERROR] /Users/vshukla/git/Prism/src/main/java/main/MainUITabbed.java:[93,67] cannot find symbol symbol: variable Application [INFO] 3 errors [INFO] ------------------------------------------------------------- [INFO] ------------------------------------------------------------------------ [INFO] BUILD FAILURE [INFO] ------------------------------------------------------------------------ [INFO] Total time: 2.591 s [INFO] Finished at: 2017-03-01T13:09:47+05:30 [INFO] Final Memory: 21M/347M [INFO] ------------------------------------------------------------------------ [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project Maven: Compilation failure: Compilation failure: [ERROR] /Users/vshukla/git/Prism/src/main/java/main/MainUITabbed.java:[26,22] package com.apple.eawt does not exist [ERROR] /Users/vshukla/git/Prism/src/main/java/main/MainUITabbed.java:[93,41] cannot find symbol [ERROR] symbol: class Application [ERROR] /Users/vshukla/git/Prism/src/main/java/main/MainUITabbed.java:[93,67] cannot find symbol [ERROR] symbol: variable Application [ERROR] -> [Help 1] [ERROR] [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. [ERROR] Re-run Maven using the -X switch to enable full debug logging. [ERROR] [ERROR] For more information about the errors and possible solutions, please read the following articles: [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException А вот фрагмент кода, выдающий ошибку компиляции из класса MainUITabbed:import com.apple.eawt.Application; public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { Application application = Application.getApplication(); // line 93 ImageIcon imgicon = new ImageIcon(getClass().getResource( "ICON.jpg")); Image img = imgicon.getImage(); application.setDockIconImage(img); MainUITabbed frame = new MainUITabbed(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); }
r

roger_that

5 лет назад

Ответов: 25

Не удалось найти инструменты.jar. Убедитесь, что C:\Program Files\Java\jre1.8.0_151 содержит допустимую установку JDK.

Несмотря на то, что я вручную настроил структуру проекта JDK структура файла/проекта, эта ошибка по-прежнему отображается ОШИБКА: сборка не удалась с исключением.`Что пошло не так: Не удалось выполнить задачу ':sample:compileReleaseJavaWithJavac'. Не удалось найти tools.jar. Убедитесь, что C:\Program Files\Java\jre1.8.0_151 содержит допустимую установку JDK.` Я не понимаю, почему он все еще ищет C:\Program Files\Java\jre1.8.0_151 вместо JDK
V

Viswesvar Sekar

4 года назад

Ответов: 25

Selenium 2.53 не работает в Firefox 47

Я получаю сообщение об ошибке при использовании Firefox с WebDriver.org.openqa.selenium.firefox.NotConnectedException: Unable to connect to host 127.0.0.1 on port 7055 after 45000 ms. Версия Firefox: 47.0 Селен:2.53.0 Windows 10 64 бит Кто-нибудь сталкивался с похожей проблемой или знает, как ее решить? Он отлично работает с Chrome, но с Firefox ни один из URL-адресов не загружается.
v

veena k

6 лет назад

Ответов: 15

Java 8 lambda получает и удаляет элемент из списка

По списку элементов я хочу получить элемент с заданным свойством и удалить его из списка. Лучшее решение, которое я нашел:ProducerDTO p = producersProcedureActive .stream() .filter(producer -> producer.getPod().equals(pod)) .findFirst() .get(); producersProcedureActive.remove(p); Можно ли объединить get и remove в лямбда-выражении?
M

Marco Stramezzi

6 лет назад

Ответов: 12

Разница между findAny() и findFirst() в Java 8

Я немного запутался между Stream#findAny() и Stream#findFirst() API Stream в Java 8.Я понял, что оба вернут первый совпадающий элемент из потока, например, при использовании в сочетании с фильтром?Итак, зачем два метода для одной и той же задачи? Я что-то пропустил?
M

Mandeep Rajpal

6 лет назад

Ответов: 8

Как получить ZoneOffset по умолчанию в java8?

С java8 мы знаем, что использование ZoneId.default() может получить системное значение по умолчанию ZoneId, но как получить значение по умолчанию ZoneOffset?Я вижу, что ZoneId имеет некоторые "правила", и каждое правило имеет ZoneOffset, это означает, что ZoneId может иметь более одного *100008 *Смещение зоны?
F

FredSuvn

5 лет назад

Ответов: 2

Образы Docker — типы. Slim против Slim-Stretch против Stretch против Alpine

Я ищу образ докера для создания java-приложения и просматриваю доступные варианты образов OpenJDK. Я смотрю здесь https://github.com/docker-library/openjdk/tree/master/8/jdk и вижу alpine, slim и windows. В чем разница между ними и что дает каждый вариант?
m

mailtobash

3 года назад

Ответов: 2

Почему Spring MVC отвечает 404 и сообщает «Не найдено сопоставление для HTTP-запроса с URI [...] в DispatcherServlet»?

Я пишу приложение Spring MVC, развернутое на Tomcat. См. следующий минимальный, полный и проверяемый примерpublic class Application extends AbstractAnnotationConfigDispatcherServletInitializer { protected Class[] getRootConfigClasses() { return new Class[] { }; } protected Class[] getServletConfigClasses() { return new Class[] { SpringServletConfig.class }; } protected String[] getServletMappings() { return new String[] { "/*" }; } } Где SpringServletConfig равно@Configuration @ComponentScan("com.example.controllers") @EnableWebMvc public class SpringServletConfig { @Bean public InternalResourceViewResolver resolver() { InternalResourceViewResolver vr = new InternalResourceViewResolver(); vr.setPrefix("/WEB-INF/jsps/"); vr.setSuffix(".jsp"); return vr; } } Наконец, у меня есть @Controller в пакете com.example.controllers@Controller public class ExampleController { @RequestMapping(path = "/home", method = RequestMethod.GET) public String example() { return "index"; } } Контекстное имя моего приложения Пример. Когда я отправляю запрос наhttp://localhost:8080/Пример/главная страница приложение отвечает статусом HTTP 404 и регистрирует следующееWARN o.s.web.servlet.PageNotFound — не найдено сопоставление для HTTP-запроса с URI `[/Example/WEB-INF/jsps/index.jsp]` в `DispatcherServlet` с именем 'dispatcher' У меня есть ресурс JSP по адресу /WEB-INF/jsps/index.jsp Я ожидал, что Spring MVC будет использовать мой контроллер для обработки запроса и перенаправления в JSP, так почему же он отвечает 404?Это канонический пост для ответов на вопросы об этом предупреждающем сообщении.
S

Sotirios Delimanolis

5 лет назад

Ответов: 11

java.util.Objects.isNull против объекта == ноль

Как вы знаете, java.util.Objects равно Этот класс состоит из статических служебных методов для работы с объектами. Один из таких методов: Objects.isNull().Насколько я понимаю, Objects.isNull() устранит вероятность случайного присвоения объекту нулевого значения путем пропуска второго =.Однако в примечании к API указано: Этот метод существует для использования в качестве Predicate, filter(Objects::isNull) Может ли быть какая-либо причина/обстоятельство, по которым я должен использовать object == null вместо Objects.isNull() в выражении if?*100008 *Должен ли Objects.isNull() ограничиваться исключительно предикатами?
L

Lucas T

6 лет назад

Ответов: 5

Как сопоставить вложенное значение со свойством, используя аннотации Джексона?

Допустим, я обращаюсь к API, который отвечает следующим JSON для продукта:{ "id": 123, "name": "The Best Product", "brand": { "id": 234, "name": "ACME Products" } } Я могу прекрасно сопоставить идентификатор и название продукта, используя аннотации Джексона:public class ProductTest { private int productId; private String productName, brandName; @JsonProperty("id") public int getProductId() { return productId; } public void setProductId(int productId) { this.productId = productId; } @JsonProperty("name") public String getProductName() { return productName; } public void setProductName(String productName) { this.productName = productName; } public String getBrandName() { return brandName; } public void setBrandName(String brandName) { this.brandName = brandName; } } А затем с помощью метода fromJson создать продукт: JsonNode apiResponse = api.getResponse(); Product product = Json.fromJson(apiResponse, Product.class); Но теперь я пытаюсь выяснить, как получить название бренда, которое является вложенным свойством. Я надеялся, что что-то вроде этого сработает: @JsonProperty("brand.name") public String getBrandName() { return brandName; } Но, конечно же, нет. Есть ли простой способ выполнить то, что я хочу, используя аннотации? Фактический ответ JSON, который я пытаюсь разобрать, очень сложен, и я не хочу создавать новый класс для каждого подузла, хотя мне нужно только одно поле.
k

kenske

6 лет назад

Ответов: 7

Почему Map.of не разрешает нулевые ключи и значения?

В Java 9 введены новые фабричные методы для интерфейсов List, Set и Map. Эти методы позволяют быстро создать экземпляр объекта Map со значениями в одной строке. Теперь, если мы посчитаем: Map map1 = new HashMap(Map.of(1, "value1", 2, "value2", 3, "value3")); map1.put(4, null); Вышеупомянутое разрешено без каких-либо исключений, а если мы делаем:Map map2 = Map.of(1, "value1", 2, "value2", 3, "value3", 4, null ); Выдает:Exception in thread "main" java.lang.NullPointerException at java.base/java.util.Objects.requireNonNull(Objects.java:221) .. Я не могу получить, почему null не допускается во втором случае.Я знаю, что HashMap может принимать null как ключ, так и значение, но почему это было ограничено в случае Map.of?То же самое происходит в случае java.util.Set.of("v1", "v2", null) и java.util.List.of("v1" , "v2", null).
h

hi.nitish

5 лет назад

Ответов: 8

Плагины maven-site 3.3 java.lang.ClassNotFoundException: org.apache.maven.doxia.siterenderer.DocumentContent

С этой ночи плагины maven site 3.3 перестают работать.Попытка удалить локальный репозиторий, но ничего не изменилось. Мавен 3.3.9 Java 1.8В pom не определены конфигурации или зависимости для плагинов сайта[WARNING] Error injecting: org.apache.maven.report.projectinfo.CiManagementReport java.lang.NoClassDefFoundError: org/apache/maven/doxia/siterenderer/DocumentContent
t

timmy otool

4 года назад

Ответов: 8

Почему Apache Commons считает «१२३» числовым?

Согласно документации Apache Commons Lang для StringUtils.isNumeric(), строка '१२३' является числовой.Поскольку я полагал, что это может быть ошибка в документации, я провел тесты, чтобы проверить утверждение. Я обнаружил, что согласно Apache Commons это является числовым.Почему эта строка числовая? Что представляют эти символы?
H

Hannes

5 лет назад

Ответов: 5

устройства adb => нет разрешений (пользователь в группе plugdev; ваши правила udev неверны?)

Я получаю следующий журнал ошибок, если подключаю свой телефон Android с ОС Android Oreo к ПК с Linux$ adb devices List of devices attached xxxxxxxx no permissions (user in plugdev group; are your udev rules wrong?); see [http://developer.android.com/tools/device.html] Я пытался использовать ссылку, указанную в сообщении об ошибке, но по-прежнему получаю ту же ошибку.
A

Abhishek Dwivedi

3 года назад

Ответов: 2

Когда следует использовать потоки?

Я только что столкнулся с вопросом при использовании List и его метода stream(). Хотя я знаю, как их использовать, я не совсем уверен, когда их использовать.Например, у меня есть список, содержащий разные пути к разным местам. Теперь я хотел бы проверить, содержит ли один заданный путь какой-либо из путей, указанных в списке. Я хотел бы вернуть boolean в зависимости от того, было ли выполнено условие.Это, конечно, несложная задача сама по себе. Но мне интересно, следует ли мне использовать потоки или цикл for(-each).Списокчастный статический окончательный список EXCLUDE_PATHS = Arrays.asList( "мой/путь/один", "мой/путь/два" ); Пример использования потока:частное логическое значение isExcluded(строковый путь) { вернуть EXCLUDE_PATHS.stream() .map(String::toLowerCase) .фильтр (путь :: содержит) .collect(Коллекторы.toList()) .размер() > 0; } Пример использования цикла for-each:частное логическое значение isExcluded(строковый путь){ для (Строка excludePath: EXCLUDE_PATHS) { если (path.contains(excludePath.toLowerCase())) { вернуть истину; } } вернуть ложь; } Обратите внимание, что параметр путь всегда равен нижний регистр.Мое первое предположение состоит в том, что подход for-each быстрее, потому что цикл вернется немедленно, если условие будет выполнено. В то время как поток по-прежнему будет перебирать все записи списка, чтобы завершить фильтрацию.Верно ли мое предположение? Если да, то почему (или, скорее, когда) должен ли я использовать stream() тогда?
m

mcuenez

5 лет назад

Ответов: 6

Казалось бы, бесконечный цикл завершается, если не используется System.out.println.

У меня был простой фрагмент кода, который предположительно представлял собой бесконечный цикл, поскольку x всегда будет расти и всегда будет оставаться больше, чем j.int x = 5; int y = 9; for (int j = 0; j но как есть, он печатает y и не зацикливается бесконечно. Я не могу понять, почему. Однако, когда я корректирую код следующим образом:int x = 5; int y = 9; for (int j = 0; j Это становится бесконечным циклом, и я понятия не имею, почему. Java распознает бесконечный цикл и пропускает его в первой ситуации, но должен выполнить вызов метода во второй, чтобы он вел себя так, как ожидалось? Запутался :)
O

Omar

5 лет назад

Ответов: 6

Лучше вернуть ImmutableMap или карту?

Допустим, я пишу метод, который должен возвращать Карту. Например:public Map foo() { return new HashMap(); } Поразмыслив некоторое время, я решил, что нет причин изменять эту карту после ее создания. Таким образом, я хотел бы вернуть ImmutableMap.public Map foo() { return ImmutableMap.of(); } Должен ли я оставить возвращаемый тип как универсальную карту или указать, что я возвращаю ImmutableMap? С одной стороны, именно для этого и создавались интерфейсы; чтобы скрыть детали реализации. С другой стороны, если я оставлю это так, другие разработчики могут упустить тот факт, что этот объект неизменяемый. Таким образом, я не достигну главной цели неизменяемых объектов; чтобы сделать код более понятным за счет минимизации количества объектов, которые могут изменяться. Хуже того, через некоторое время кто-то может попытаться изменить этот объект, что приведет к ошибке выполнения (компилятор не предупредит об этом).
A

AMT

6 лет назад

Ответов: 9

Статический блок инициализации в Котлине

Что эквивалентно статическому блоку инициализации в Kotlin?Я понимаю, что Kotlin разработан так, чтобы не было статических вещей. Я ищу что-то с эквивалентной семантикой - код запускается один раз при первой загрузке класса.Мой конкретный вариант использования заключается в том, что я хочу включить функцию DayNight из библиотеки Android AppCompat, и инструкции говорят поместить некоторый код в блок статической инициализации класса Application.*100006 *
M

Marcin Koziński

6 лет назад

Ответов: 2

Проверить instanceof в потоке

У меня есть следующее выражение:scheduleIntervalContainers.stream() .filter(sic -> ((ScheduleIntervalContainer) sic).getStartTime() != ((ScheduleIntervalContainer)sic).getEndTime()) .collect(Collectors.toList()); ...где scheduleIntervalContainers имеет тип элемента ScheduleContainer:final List scheduleIntervalContainers Можно ли проверить тип перед фильтром?
q

quma

6 лет назад

Ответов: 4

Есть ли какая-то польза от обновления скомпилированного кода Java 7 до Java 8?

У меня есть старое приложение, написанное с использованием Java 7. Оно отлично работает в Java 8 JRE. Я не планирую переписывать какой-либо код, чтобы использовать возможности Java 8. Есть ли какие-либо технические преимущества в обновлении скомпилированного кода до последней версии Java 8 JDK?Чтобы было ясно, код в настоящее время скомпилирован с Java 7 и уже работает с последней версией Java 8 JRE. Он уже должен извлечь выгоду из улучшений среды выполнения Java 8. Этот вопрос заключается в том, получат ли какие-либо преимущества компиляция с версией 8 и запуск с скомпилированным байт-кодом Java 8.Кроме того, меня не интересуют нетехнические преимущества, такие как продуктивность разработчиков. Я думаю, что это важно, но не суть этого вопроса. Я прошу ради производственного кода, в котором НЕТ команды разработчиков. Это чисто в режиме обслуживания.
g

g8torPaul

5 лет назад

Ответов: 5

Boolean.valueOf() иногда создает NullPointerException

У меня есть этот код:package tests; import java.util.Hashtable; public class Tests { public static void main(String[] args) { Hashtable modifiedItems = new Hashtable(); System.out.println("TEST 1"); System.out.println(modifiedItems.get("item1")); // Prints null System.out.println("TEST 2"); System.out.println(modifiedItems.get("item1") == null); // Prints true System.out.println("TEST 3"); System.out.println(Boolean.valueOf(null)); // Prints false System.out.println("TEST 4"); System.out.println(Boolean.valueOf(modifiedItems.get("item1"))); // Produces NullPointerException System.out.println("FINISHED!"); // Never executed } } Моя проблема в том, что я не понимаю, почему Test 3 работает нормально (он печатает false и не выдает NullPointerException) при этом Тест 4 выдает NullPointerException. Как видно из тестов 1 и 2, null и modifiedItems.get("item1") равны и ноль.Поведение одинаковое в Java 7 и 8.
D

David E

4 года назад

Ответов: 5

Почему цикл Java с 4 миллиардами итераций занимает всего 2 мс?

Я запускаю следующий код Java на ноутбуке с процессором Intel Core i7 с тактовой частотой 2,7 ГГц. Я намеревался позволить ему измерять, сколько времени требуется для завершения цикла с 2^32 итерациями, что, как я ожидал, составит примерно 1,48 секунды (4/2,7 = 1,48).Но на самом деле это занимает всего 2 миллисекунды вместо 1,48 с. Мне интересно, является ли это результатом какой-либо оптимизации JVM внизу?public static void main(String[] args) { long start = System.nanoTime(); for (int i = Integer.MIN_VALUE; i
t

twimo

4 года назад

Ответов: 6

Android N Java 8 features (Jack compiler) and Kotlin interop

Update 3. KOTLIN IS NOW OFFICIALLY SUPPORTED FOR ANDROID DEVELOPMENT. BY GOOGLE. YAAAAAAAAS! Update 2: It looks like JetBrains is really committed to supporting Kotlin for Android in the long run. I'm a happy kotlin user :). Update: Hadi Hariri, from JetBrains, mentioned they're going to release some info on this topic. I will update this post once they do. === DEPRECATED STUFF NEXT === Google just released a preview for the upcoming Android N with some interesting features, the most notable being partial Java 8 language support. This is possible due to the new Jack toolchain Google is working on. The current toolchain using javac or kotlinc: javac (.java --> .class) --> dx (.class --> .dex) kotlinc (.kt --> .class) --> dx (.class --> .dex) New Jack toolchain: Jack (.java --> .jack --> .dex) I am assuming Google will push forward towards making Jack the default toolchain for Android development. Update: Jack is now deprecated. Yas. My question is how will this new toolchain affect me, in the future, as a kotlin user for Android development? Will I get "stuck in the past"?
T

Tudor Luca

6 лет назад

Ответов: 8

Failed to run sdkmanager --list with Java 9

I downloaded and installed: JDK (jdk-9.0.1_osx-x64_bin.dmg) from Oracle here Android SDK (sdk-tools-darwin-3859397.zip) from Google here. After configuring the PATH variable, I tried running sdkmanager, which replaced the android command for managing SDK components. However, it failed as shown here: $ sdkmanager --list Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema at com.android.repository.api.SchemaModule$SchemaModuleVersion.(SchemaModule.java:156) at com.android.repository.api.SchemaModule.(SchemaModule.java:75) at com.android.sdklib.repository.AndroidSdkHandler.(AndroidSdkHandler.java:81) at com.android.sdklib.tool.SdkManagerCli.main(SdkManagerCli.java:117) at com.android.sdklib.tool.SdkManagerCli.main(SdkManagerCli.java:93) Caused by: java.lang.ClassNotFoundException: javax.xml.bind.annotation.XmlSchema at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:582) at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:185) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:496) ... 5 more Here is the Java version: $ java -version java version "9.0.1" Java(TM) SE Runtime Environment (build 9.0.1+11) Java HotSpot(TM) 64-Bit Server VM (build 9.0.1+11, mixed mode) Does anyone know how to fix it without going back to Java 8? Related Questions Failed to install android-sdk: "java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema" This post asked a similar question. However, the post is closed and the only answer suggests going back to Java 8. WARNING Please note that I already mentioned above that going back to Java 8 or running it side-by-side is NOT what I wanted.
S

Siu Ching Pong -Asuka Kenji-

4 года назад

Ответов: 30

Android Room Database: How to handle Arraylist in an Entity?

I just implemented Room for offline data saving. But in an Entity class, I am getting the following error: Error:(27, 30) error: Cannot figure out how to save this field into database. You can consider adding a type converter for it. And the class is as following: @Entity(tableName = "firstPageData") public class MainActivityData { @PrimaryKey private String userId; @ColumnInfo(name = "item1_id") private String itemOneId; @ColumnInfo(name = "item2_id") private String itemTwoId; // THIS IS CAUSING THE ERROR... BASICALLY IT ISN'T READING ARRAYS @ColumnInfo(name = "mylist_array") private ArrayList myListItems; public String getUserId() { return userId; } public void setUserId(String userId) { this.userId = userId; } public ArrayList getMyListItems() { return myListItems; } public void setCheckListItems(ArrayList myListItems) { this.myListItems = myListItems; } } So basically I want to save the ArrayList in the database but I was not able to find anything relevant to it. Can you guide me regarding how to save an Array using Room? NOTE: MyListItems Pojo class contains 2 Strings (as of now) Thanks in advance.
T

Tushar Gogna

5 лет назад

Ответов: 19

Is it possible to use VectorDrawable in Buttons and TextViews using android:DrawableRight?

When I use VectorDrawable assets in a textview or imageview I get a runtime crash when using "android:DrawableRight" / "android:DrawableEnd" / "android:DrawableStart" / "android:DrawableLeft". The app will compile fine without any warnings. I am using Gradle 1.5 Support Library 23.2 ('com.android.support:appcompat-v7:23.2.0') What I have found though is that I can programmatically assign SVG's in Java without crashes like this. TextView tv = (TextView) findViewById(R.id.textView); tv.setCompoundDrawablesWithIntrinsicBounds(null,null, getResources().getDrawable(R.drawable.ic_accessible_white_36px),null); (I suspect this is a support library bug for 23.2.) But is it possible to use drawableRight etc for SVG assets ? Here is my layout Here is my Activity package au.com.angryitguy.testsvg; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } } Here is the unmodified VectorDrawable asset from Google's material design site. Here is my app build.gradle apply plugin: 'com.android.application' android { compileSdkVersion 23 buildToolsVersion "23.0.2" defaultConfig { applicationId "au.com.angryitguy.testsvg" minSdkVersion 16 targetSdkVersion 23 versionCode 1 versionName "1.0" // Stops the Gradle plugin’s automatic rasterization of vectors generatedDensities = [] } // Flag to tell aapt to keep the attribute ids around aaptOptions { additionalParameters "--no-version-vectors" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:23.2.0' } Here is the crash. (Note the inflate errors that reference the textview.) java.lang.RuntimeException: Unable to start activity ComponentInfo{ au.com.angryitguy.testsvg/au.com.angryitguy.testsvg.MainActivity}: android.view.InflateException: Binary XML file line #13: Error inflating class TextView at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084) at android.app.ActivityThread.access$600(ActivityThread.java:130) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:4745) ... Caused by: android.view.InflateException: Binary XML file line #13: Error inflating class TextView at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704) at android.view.LayoutInflater.rInflate(LayoutInflater.java:746) at android.view.LayoutInflater.inflate(LayoutInflater.java:489) at android.view.LayoutInflater.inflate(LayoutInflater.java:396) at android.view.LayoutInflater.inflate(LayoutInflater.java:352) at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:267) at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:129) at au.com.angryitguy.testsvg.MainActivity.onCreate(MainActivity.java:14) at android.app.Activity.performCreate(Activity.java:5008) ... Caused by: android.content.res.Resources$NotFoundException: File res/drawable/ic_accessible_white_36px.xml from drawable resource ID #0x7f02004b at android.content.res.Resources.loadDrawable(Resources.java:1918) at android.content.res.TypedArray.getDrawable(TypedArray.java:601) at android.widget.TextView.(TextView.java:622) at android.support.v7.widget.AppCompatTextView.(AppCompatTextView.java:60) at android.support.v7.widget.AppCompatTextView.(AppCompatTextView.java:56) at android.support.v7.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:103) at android.support.v7.app.AppCompatDelegateImplV7.createView(AppCompatDelegateImplV7.java:963) at android.support.v7.app.AppCompatDelegateImplV7.onCreateView(AppCompatDelegateImplV7.java:1022) at android.support.v4.view.LayoutInflaterCompatHC$FactoryWrapperHC.onCreateView(LayoutInflaterCompatHC.java:44) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:675) at android.view.LayoutInflater.rInflate(LayoutInflater.java:746) at android.view.LayoutInflater.inflate(LayoutInflater.java:489) at android.view.LayoutInflater.inflate(LayoutInflater.java:396) at android.view.LayoutInflater.inflate(LayoutInflater.java:352) at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:267) at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:129) at au.com.angryitguy.testsvg.MainActivity.onCreate(MainActivity.java:14) at android.app.Activity.performCreate(Activity.java:5008) ... Caused by: org.xmlpull.v1.XmlPullParserException: Binary XML file line #1: invalid drawable tag vector at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:877) at android.graphics.drawable.Drawable.createFromXml(Drawable.java:818) at android.content.res.Resources.loadDrawable(Resources.java:1915) at android.content.res.TypedArray.getDrawable(TypedArray.java:601) at android.widget.TextView.(TextView.java:622) at android.support.v7.widget.AppCompatTextView.(AppCompatTextView.java:60) at android.support.v7.widget.AppCompatTextView.(AppCompatTextView.java:56) at android.support.v7.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:103) at android.support.v7.app.AppCompatDelegateImplV7.createView(AppCompatDelegateImplV7.java:963) at android.support.v7.app.AppCompatDelegateImplV7.onCreateView(AppCompatDelegateImplV7.java:1022) at android.support.v4.view.LayoutInflaterCompatHC$FactoryWrapperHC.onCreateView(LayoutInflaterCompatHC.java:44) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:675) at android.view.LayoutInflater.rInflate(LayoutInflater.java:746) at android.view.LayoutInflater.inflate(LayoutInflater.java:489) at android.view.LayoutInflater.inflate(LayoutInflater.java:396) at android.view.LayoutInflater.inflate(LayoutInflater.java:352) at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:267) at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:129) at au.com.angryitguy.testsvg.MainActivity.onCreate(MainActivity.java:14) at android.app.Activity.performCreate(Activity.java:5008) ...
a

angryITguy

6 лет назад

Ответов: 17

Firebase В классе не найдено свойств для сериализации

Я заблокирован при создании базы данных Firebase.Я пытаюсь смоделировать класс. Очень простой класс:package com.glups.model; import com.google.firebase.database.IgnoreExtraProperties; @IgnoreExtraProperties public class AlumnoFB { private String nombre; private String apellidos; private String telefono; private String email; private Boolean tieneWhatsapp; private Boolean tieneTelegram; private Boolean tieneHangouts; private Long formaPago; private Double ratioHora; private Double precioHora; private Double horasCompensadas; public AlumnoFB() { // Default constructor required for calls to DataSnapshot.getValue(User.class) } public AlumnoFB(String nombre, String apellidos, String telefono, String email, Boolean tieneWhatsapp, Boolean tieneTelegram, Boolean tieneHangouts, Long formaPago, Double ratioHora, Double precioHora, Double horasCompensadas) { this.nombre = nombre; this.apellidos = apellidos; this.telefono = telefono; this.email = email; this.tieneWhatsapp = tieneWhatsapp; this.tieneTelegram = tieneTelegram; this.tieneHangouts = tieneHangouts; this.formaPago = formaPago; this.ratioHora = ratioHora; this.precioHora = precioHora; this.horasCompensadas = horasCompensadas; } } это почти как образец класса из Firebase.Пользователь приложения, полученный с помощью getUser(), зарегистрирован в Firebase.Когда я вызываю SetValue:AlumnoFB alumno = new AlumnoFB("", "", "", "", false, false, false, ((Integer)FormaPago.INT_NO_PAGADO).longValue(), 0.0, 0.0, 0.0); mDatabase.child("AlumnoFB").child(ControlClasesFirebase.getUser().getUid()).setValue(alumno) ; Возникло фатальное исключение.06-10 10:17:37.179 13841-13841/com.glups.controlclases E/AndroidRuntime: FATAL EXCEPTION: main Process: com.glups.controlclases, PID: 13841 com.google.firebase.database.DatabaseException: No properties to serialize found on class com.glups.model.AlumnoFB at com.google.android.gms.internal.zzaix$zza.(Unknown Source) at com.google.android.gms.internal.zzaix.zzj(Unknown Source) at com.google.android.gms.internal.zzaix.zzaw(Unknown Source) at com.google.android.gms.internal.zzaix.zzav(Unknown Source) at com.google.firebase.database.DatabaseReference.zza(Unknown Source) at com.google.firebase.database.DatabaseReference.setValue(Unknown Source) at com.glups.controlclases.MainActivity$4.onClick(MainActivity.java:305) at android.view.View.performClick(View.java:4780) at android.view.View$PerformClick.run(View.java:19866) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5258) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) Я проверил типы, и все они принимаются. Что не так?
E

EulerVen

6 лет назад

Ответов: 12

Android: Dex не может анализировать 52-байтовый код версии

Я только что перешел на Android Studio 2.1, и эта ошибка появилась при попытке скомпилировать приложение, которое ранее работало: Ошибка: Ошибка преобразования байт-кода в dex: Причина: Dex не может проанализировать 52-байтовый код версии. Это вызвано зависимостями библиотеки, которые были скомпилированы с использованием Java 8 или более поздней версии. Если вы используете плагин 'java' gradle в подмодуле библиотеки, добавьте целевая совместимость = '1.7' исходная совместимость = '1.7' в файл build.gradle этого подмодуля. Я уже обновил файл gradle.build основного проекта, чтобы принудительно сгенерировать код Java 1.7:buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:2.1.0' apply plugin: 'java' sourceCompatibility = 1.7 targetCompatibility = 1.7 } } Я также обновил модуль gradle.build следующим образом, чтобы установить версию Java:android { compileSdkVersion 19 buildToolsVersion "23.0.2" defaultConfig { applicationId "com.abc.def" minSdkVersion 19 targetSdkVersion 19 } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' } } compileOptions { sourceCompatibility JavaVersion.VERSION_1_7 targetCompatibility JavaVersion.VERSION_1_7 } } Подмодуль создается с помощью Maven. В файле pom.xml я также пытался принудительно сгенерировать код версии 1.7. Я понимаю, что использую артефакт сборки, который включает в себя подчиненные модули, но я не изменил ни один из подчиненных модулей, и результирующий файл .jar для модуля работал нормально при последней компиляции. org.apache.maven.plugins maven-assembly-plugin 2.6 1.7 1.7 jar-with-dependencies make-assembly package single Мой вопрос: 1) Это проблема Android Studio 2.1? Видели ли это другие? 2) Предполагая, что это моя ошибка, и поскольку сообщение об ошибке не помогает найти неисправный модуль, есть ли какие-либо рекомендации по поиску кода V52? Я не могу просто опустить библиотеки, не нарушая большого количества кода. Можно ли проверить файл .jar, чтобы найти версию кода? Заранее спасибо. -Гефест
H

Hephaestus

6 лет назад

Ответов: 15

Можно ли использовать Java 8 Stream API на Android API < 24?

Я прочитал этот пост здесь. Но все же я не могу запустить код, содержащий функции Java 8 Stream API, подобные следующим, на minSdkVersion List newCars = cars.stream() .filter(s -> s.getColor().equals("red")) .collect(Collectors.toList()); Это не запускается из-за сообщения об ошибке Для вызова требуется уровень API 24 (текущий минимум 15): java.util.Collection#stream Итак, кто-нибудь знает решение?
u

unlimited101

5 лет назад

Ответов: 6

Зачем использовать Objects.requireNonNull ()?

Я заметил, что многие методы Java 8 в Oracle JDK используют Objects.requireNonNull (), который внутренне выдает NullPointerException, если данный объект (аргумент) равен null.public static T requireNonNull(T obj) { if (obj == null) throw new NullPointerException(); return obj; } Но NullPointerException все равно будет выброшено, если разыменован объект null. Итак, зачем делать эту дополнительную нулевую проверку и бросать Исключение NullPointerException?Один очевидный ответ (или преимущество) состоит в том, что он делает код более читаемым, и я согласен. Я хочу узнать другие причины использования Objects.requireNonNull () в начале метода.
u

user4686046

4 года назад

Ответов: 11

2022 WebDevInsider