Как я могу включить папку jx /class jx / mxj в заблокированное m4l-устройство?

У меня есть устройство maxforlive, использующее java / mxj.

Я использовал все эти опции для включения моих java-файлов во время разработки:

  • Включая мою (maven) директорию target / classes через max.java.config.txt.
  • Добавление каталога через Параметры> Настройки файла
  • Добавление банки в автоматически сгенерированный (OSX) ~/Documents/Max 7/Max для Live Devices /MyProject Project / каталог

Все эти пути работают нормально, т.е. файлы подобраны, и мой объект mxj работает.

Однако, когда я замораживаю устройство для публикации, файлы java не включаются ни в один из этих путей.

Я попытался разобраться в https://docs.cycling74.com/max7/tutorials/jitterchapter99_appendixd хотя я не собираю отдельное устройство, а замораживающее устройство maxforlive, поэтому я включил max.jar и mxj.mxo в папку Project. который тоже не работал.

Когда якопирую папку target / classes или target / classes /myproject в сгенерированную папку Project (/code, /code/classes, /classes), max перемещает все файлы классов в / code, создавая для меня много работы в то время как даже не собирая классы для разработчиков.

Я видел устройства на maxforlive.com с правильно включенными java-файлами, так что я знаю, что это можно сделать. Как мне этого добиться?

2 ответа

Решение

Итак, вот оно: Включение только одного класса без других зависимостей классов, кроме MaxObject, работает нормально. Также нет необходимости добавлять файлы.java, как я уже говорил в предыдущем комментарии.

Все, что вам нужно сделать, это:

  • иметь работающий объект mxj в своем патчере (не имеет значения, где вы его сохранили)
  • нажмите кнопку внизу с надписью "Показать содержащий проект" при наведении
  • добавьте свой файл класса
  • замерзать

Когда у вас есть больше классов, это становится сложным.

1) Если у вас есть типичная иерархия Java с папками и подпапками, это не сработает. Поскольку вы должны добавить каждый файл отдельно, иерархия будет уничтожена. Используйте банку и добавьте ее в содержащий проект.

2) Вот оно, верьте этому или нет: все классы, которые вы собираетесь использовать, должны быть загружены при первом создании. Я называю это статическим распределением классов;)

Способ достижения этого:

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

  • если вам случается использовать интерфейсы и создавать их динамически (new Runnable() {...}), не делайте этого. Динамические реализации - это новые классы.

Интересный факт: вы также можете переопределять методы классов. Так иди

    class Runner {
      public void run() { throw new Exception("not implemented"); }
    }

тогда вы можете динамически создать

    new Runner() {
      public void run() {
        MaxObject.post("Even Mr. Gosling says interfaces were a mistake!");
      }
    }

Не верь этому? Я не виню тебя. Посмотрите https://github.com/mihop/mxj-wsserver и http://www.maxforlive.com/library/device/3809 для конвертации.

К сожалению, это давняя ошибка в MFL.

Вот фильм 2012 года, где я его воспроизвожу, с тех пор он не был исправлен. http://arttech.nl/projectjavaissue.mov

Это означает, что единственный способ распространять устройства MFL с файлами классов Java - включать их отдельно.

Другие вопросы по тегам