Nano Hash - криптовалюты, майнинг, программирование

Eclipse IDE может генерировать файл шапки javacard, но в командной строке я сталкиваюсь с этой ошибкой

Приведенная ниже ошибка заставила меня копаться в процессе сборки файла шапки в командной строке без использования IDE. Итак, теперь я могу создать файл шапки из командной строки, используя серию команд java/javac. Но у меня есть этот апплет, который успешно создал файл шапки, если он построен через eclipse IDE, но я сталкиваюсь с ошибкой, когда пытаюсь построить в командной строке. У меня также возникает такая же ошибка, когда я пытался правильно настроить параметры/среду сборки gradle. Это ошибка:

[ant:convert] [ INFO: ]     Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
[ant:convert]
[ant:convert]
[ant:convert] warning: You did not supply export file for the previous minor version of the package
[ant:convert] [ INFO: ] conversion completed with 1 errors and 1 warnings.
[ant:convert] error: Class org/dx/tools/TestApplet, specified in -applet option, is abstract.

Обратите внимание, это работающий и проверенный апплет в сочетании с другими апплетами, использующими этот апплет. И это встроено в Eclipse IDE.

Также я могу создать файл .class. Проблема во время преобразования файла класса в файл cap.

Вот как это выглядит:

package org.dx.tools;

import org.globalplatform.GPSystem;
import org.globalplatform.SecureChannel;

import javacardx.apdu.ExtendedLength;
import javacard.framework.ISO7816;
import javacard.framework.ISOException;
import javacard.framework.Util;
import javacard.framework.APDU;
import javacard.framework.APDUException;
import javacard.framework.Applet;
import javacard.framework.AppletEvent;    

public abstract class TestApplet extends Applet implements AppletEvent, 
    ExtendedLength {
  ...
}

Этот .cap один из пяти других. Остальные не абстрактны, а наследуются от этого. Поскольку он построен в среде eclipse IDE, я могу создать другие файлы шапки, взяв выходные данные IDE. Во-первых, я jar классы, поскольку, как я уже сказал, я могу создавать классы и передавать команду преобразования java для создания других колпачков, и я также использую TestApplet.exp, сгенерированный IDE.

ОБНОВЛЕНИЯ: 17 ноября 2019 г. Здесь приведены фактические java параметры команды, которые может построить от .class до .cap. Я взял это как раз из журнала преобразования Eclipse IDE.

Если ответ может подтвердить, что это текущее ограничение Gradle, я приму этот ответ. Если ответ может показать, каковы правильные настройки градиента, чтобы заставить его работать, я приму этот ответ. Спасибо.

13.11.2019

  • Я следовал точным параметрам вызова преобразования java, выдаваемым Windows eclipse IDE при преобразовании .class в .cap, и вводил точно такую ​​же команду на Linux-машине, и она смогла преобразовать .class в .cap. Некоторое время держитесь подальше от магии градиента, пока кто-нибудь здесь не сможет прокомментировать, что здесь происходит. 14.11.2019

Ответы:


1

Скорее всего, это связано с привязкой к более новой или старой версии библиотеки, при этом в процессе сборки вы ориентируетесь на другую версию карты Java Card. Обратите внимание, что преобразователь создает предварительно связанный код, поэтому он рассчитывает связать его с правильными версиями.

Это отличается от Java SE, где классы могут быть связаны во время выполнения, а расположение методов и полей не имеет значения, поскольку они создаются во время выполнения.

16.11.2019
  • Спасибо за информацию. Я держу этот вопрос открытым, и ответ, который я приму, — это ответ, который показывает правильные настройки градиента, которые могут преобразовать класс TestApplet выше в .cap (или .exp будет достаточно). Я также приму ответ, который может подтвердить, что это текущее ограничение в Gradle. Я только что добавил фактическую команду java, которая смогла преобразовать .class в .cap для справки. 17.11.2019
  • Это справедливо, я полагаю. Java Card — это небольшое сообщество, вы можете (должны) подумать об исправлении его самостоятельно... 17.11.2019

  • 2

    Я решил проблему, удалив блок applet {} в build.gradle. Поскольку конкретный создаваемый колпачок является абстрактным классом, у него нет вспомогательного апплета.

    25.11.2019
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..