Многие объяснения уже присутствуют, чтобы объяснить, как это происходит и как это исправить, но вы также должны следовать рекомендациям, чтобы избежать NullPointerException
вообще.
См. также: A хороший список лучших практик
Я бы добавил, очень важно, хорошо использовать модификатор final
. Использование "окончательной" модификатор, когда это применимо в Java
Сводка:
final
для обеспечения хорошей инициализации. @NotNull
и @Nullable
if("knownObject".equals(unknownObject)
valueOf()
поверх toString (). StringUtils
StringUtils.isEmpty(null)
. Используйте JSCRIPT.NET для получения библиотеки (dll) js. Тогда сошлитесь на этот dll в своем приложении.NET, и Вы просто там.Договорились!
я полагаю, что все главные механизмы JS с открытым исходным кодом (JavaScriptCore, SpiderMonkey, V8 и KJS) обеспечивают API встраивания. Единственным, с которым я на самом деле непосредственно знаком, является JavaScriptCore (который является названием механизма JS жизни SquirrelFish в), который обеспечивает чистый API C. Если не изменяет память (это было некоторое время, так как я использовал.NET).NET имеет довольно хорошую поддержку соединения в API C.
я честно не уверен, на что API для других механизмов похожи, но я действительно знаю, что они все обеспечивают их.
Однако в зависимости от Ваших целей JScript.NET может быть лучшим, поскольку все эти другие механизмы потребуют, чтобы Вы включали их со своим приложением, поскольку ОАО является единственным, которое на самом деле поставлется с ОС, но что ОС является MacOS: D
Если язык не является проблемой (любой поиграл в песочнице, написал сценарий одного), тогда существует LUA для.NET . Версия Silverlight платформы.NET также поигралась в песочнице afaik.
Я предполагаю, что я все еще неясен о том, что это - Вы, пытаются сделать, но JScript.NET могло бы стоить изучить, хотя Управляемый JScript кажется, что это может более подходить для Ваших потребностей (это больше похоже на JavaScript, чем JScript.NET).
Лично, я думал, что будет здорово интегрировать V8 так или иначе, но я не закончил загрузку исходного кода; жаль, что у меня не было времени, чтобы на самом деле сделать что-то с ним.
Script# компилирует C# в js и является мозговым ребенком одной из команд ASP.NET. у Rick Strahl также есть некоторые сообщения при встраивании js как механизм исполнения для вычисления выражения.
Открытый исходный код Интерпретатор JavaScript Jint ( http://jint.codeplex.com ) делает именно то, что вы ищете.
Изменить:
Проект был полностью переписан и теперь размещен на Github по адресу https://github.com/sebastienros/jint
Попробуйте Javascript .NET . Он размещен на GitHub. Первоначально он был размещен на CodePlex, здесь )
Обсуждение проекта: http://javascriptdotnet.codeplex.com/discussions
Он реализует Google V8. Вы можете скомпилировать и запустить JavaScript прямо из кода .NET с ним, а также предоставить объекты CLI, которые также будут использоваться кодом JavaScript. Он генерирует собственный код из JavaScript.
Эй, взгляните на Javascript .NET на codeplex ( http://javascriptdotnet.codeplex.com/ ). В версии 0.3.1 есть несколько довольно приятных новых функций, которые, вероятно, вас заинтересуют.
Посмотрите пример кода:
// Initialize the context
JavascriptContext context = new JavascriptContext();
// Setting the externals parameters of the context
context.SetParameter("console", new SystemConsole());
context.SetParameter("message", "Hello World !");
context.SetParameter("number", 1);
// Running the script
context.Run("var i; for (i = 0; i < 5; i++) console.Print(message + ' (' + i + ')'); number += i;");
// Getting a parameter
Console.WriteLine("number: " + context.GetParameter("number"));