Исключение нулевого указателя генерируется, когда приложение пытается использовать null в случае, когда требуется объект. К ним относятся:
null
. null
. null
, как если бы это был массив. null
, как если бы это был массив. null
как будто это было значение Throwable. Приложения должны бросать экземпляры этого класса, чтобы указать на другие незаконные использования объекта null
.
Ссылка: http://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html
Ваш лучший вариант сейчас - использовать JRuby. Немного предыстории: Моя компания ( BitRock ) работает со многими проприетарными и коммерческими поставщиками открытого кода. Мы помогаем им упаковать свое серверное программное обеспечение, которое обычно основано на PHP, Java или Ruby, вместе с веб-сервером или сервером приложений (Apache, Tomcat), языковой средой выполнения и базой данных (обычно Postgres, MySQL) в автономные, простой в использовании установщик. У нас есть большое количество клиентов на основе PHP (включая HelpSpot, о котором вы упомянули), но есть и несколько клиентов на основе Rails. В случае клиентов RoR нормой является использование JRuby вместе с Tomcat или Glassfish, хотя в некоторых случаях мы также связываем собственный интерпретатор Ruby для запуска определенных сценариев, которые полагаются на библиотеки, еще не перенесенные в JRuby (обычно это не ядро приложения). , JRuby быстро повзрослел и во многих случаях выполняет код быстрее, чем обычный Ruby. Вам также нужно будет учесть, что хотя перенос вашего кода на JRuby довольно прост, вам придется потратить некоторое время на это. Вы можете проверить JRuby Stack , который является бесплатным инсталлятором всего, что вам нужно для начала работы. Удачи!
Вы можете, но это не сделало бы ничего, чтобы препятствовать тому, чтобы кто-то перепроектировал или изменил его. Я помню, что была статья о подобных попытках к obfusticate Perl и как они могли быть эффективно обойдены отладчиком и 5 минут усилия.
Если Вы не можете ожидать доставки RubyEncoder, то я думаю, что ZenObfuscate является самым многообещающим. Хотя могут требоваться некоторые модификации к Вашему исходному коду, они действительно говорят это относительно своего сайта:
ZenObfuscate стоит 2 500$ за корпоративную лицензию или является индивидуально договорным для других схем лицензирования. Да, это дорого. Это было нарочно. Но не позволяйте этому мешать Вам слишком много. , Если Ваш продукт действительно прохладен и мы хотим видеть, что он успешно выполняется, мы заставим его работать. "Действительно прохладный" не freecell.
, Конечно, за 2 500$ (или больше), Вы надеялись бы получить несколько тонких настроек к компилятору, это сделает Вашу кодовую базу полностью поддерживаемой. Могло бы стоить вовлечь их в разговор.
Смотрите на JumpBox.
у меня были переговоры с ними по теме, и у них, кажется, есть решение, которое будет скоро работать на приложения для направляющих.
Если вы выпустите исходный код, запутанный или иным образом, ваше приложение будет пиратским. См., Например, Mint . Это зависит от того, что вы создаете, но вы можете обнаружить, что лучше выпустить приложение как своего рода гибрид: размещенное приложение с четко определенным API и компонент, работающий на сервере клиента. Пока истинная ценность вашего продукта находится на стороне сервера, вам не нужно запутывать свой код, и вы можете просто выпустить исходный код без изменений. Кроме того, это также может дать вам возможность обращаться к клиентам, работающим, скажем, с PHP, а не с Ruby. См., Например, Google Analytics , HopToad , Scout и т. Д. И т. Д.
Вы также можете взглянуть на Mingle из ThoughtWorks studios как пример использования JRuby для этого. Это приложение Ruby on Rails, они запускают его с помощью JRuby. Они настроили jruby для загрузки зашифрованных файлов .rb.
I'm wondering if you could just "compile" the ruby code into an executable using something like RubyScript2Exe ?
To be honest I haven't used it but it seems like it could be what you want, even if it just packages up the scripts with the interpreter into a single executable.