Персонажи, мешающие Javascript? [Дубликат]

Как это исправить?

Эта ошибка означает, что JRE, который используется для выполнения вашего кода класса, не распознает используемую версию Java. Обычно, поскольку версия Java, которая сгенерировала ваш файл класса (т.е. скомпилировала его), является более новой.

Чтобы исправить это, вы можете либо

a) Скомпилировать ваши источники Java с тем же, или более старой версии компилятора Java, который будет использоваться для его запуска. т. е. установить соответствующий JDK.

b) Скомпилировать ваши источники Java с более новой версией компилятора Java, но в режиме совместимости. т.е. используйте параметр -target.

c) Запустите скомпилированные классы в JRE, которая является той же самой или новой версией, что и JDK, используемый для компиляции классов.

Вы может проверить версии, которые вы используете в настоящий момент с помощью javac -version для компилятора, и java -version для среды выполнения.

Должен ли я установить JDK и настроить свою переменную PATH на JDK вместо JRE?

Для компиляции, конечно же, установите и настройте конкретный JDK, который вы хотите.

Для среды исполнения вы можете использовать ту, которая поставляется с JDK или автономный JRE, но независимо от того, убедитесь, что вы установили правильные версии и что вы настроили свой PATH таким образом, чтобы не было сюрпризов.

В чем разница между переменной PATH в JRE или JDK?

Переменная среды PATH сообщает командной оболочке, где нужно искать введенную команду. Когда вы набираете java, интерпретатор командной оболочки будет просматривать все местоположения, указанные в переменной PATH слева направо, чтобы найти исполняемый файл исполняемого файла java для запуска. Если у вас есть несколько версий Java, то есть у вас есть исполняемый файл java в нескольких местах, указанных в переменной PATH, то первый, который встречается при движении слева направо, будет выполняться.

Команда компилятора javac и поставляется только с JDK. Команда runtime является java и поставляется с JDK и находится в JRE.

Вероятно, у вас установлена ​​одна версия (51.0 = Java 7) javac, и у вас также есть ту же версию java, но другая предыдущая версия java появляется раньше в PATH и поэтому вызывается вместо ожидаемого.

63
задан Peter Mortensen 4 May 2015 в 17:12
поделиться

9 ответов

Я столкнулся с той же проблемой, и я решил это сложным способом. Сначала создайте глобальные переменные v1, v2 и v3. И в onclick отправьте индикатор 1, 2 или 3 и в функции проверьте 1, 2, 3, чтобы поместить v1, v2 и v3, например:

onclick="myfun(1)"
onclick="myfun(2)"
onclick="myfun(3)"

function myfun(var)
{
    if (var ==1)
        alert(v1);

    if (var ==2)
        alert(v2);

    if (var ==3)
        alert(v3);
}
77
ответ дан Peter Mortensen 22 August 2018 в 03:57
поделиться
  • 1
    вы сохранили мои фактические и некоторые из моих будущих дней – Krekkon 21 October 2014 в 14:04
77
ответ дан Peter Mortensen 5 November 2018 в 03:09
поделиться

Еще одно интересное решение могло бы сделать это:

<a href="#" itemid="<%itemid%>" itemname="<%itemname%>" onclick="SelectSurveyItem(this.itemid, this.itemname); return false;">Select</a>

Тогда вы можете использовать стандартную HTML-кодировку для обеих переменных, не беспокоясь о дополнительном усложнении цитирования javascript.

Да, этот делает создание HTML, который строго недействителен. Тем не менее, он является правильной техникой, и все современные браузеры поддерживают его.

Если это был мой, я бы, вероятно, пошел с моим первым предложением и обеспечил, чтобы значения были HTML -encoded и имеют одинарные кавычки.

8
ответ дан Dan 22 August 2018 в 03:57
поделиться
  • 1
    лично я считаю, что этот метод - плохой способ связать данные с узлами. noteslog.com/metaobjects - это несколько продвинутый метод, но он оставляет вам действительную страницу и приводит к тем же данным. – Kent Fredric 18 September 2008 в 23:48
  • 2
    Я полностью согласен с тем, что это немного грязное решение, но это, безусловно, может сделать некоторые сложные вещи значительно проще. Это определенно исправление ниши, хотя;) Техника «метаобъекта» интересна, хотя и немного взломана сама по себе, я вижу, как это было бы полезно. – Dan 18 September 2008 в 23:56

Любой хороший шаблонный двигатель, стоящий на его соли, будет иметь функцию «escape quotes». Наш (также доморощенный, где я работаю) также имеет функцию, чтобы избежать кавычек для javascript. В обоих случаях переменная шаблона затем просто добавляется с помощью _esc или _js_esc, в зависимости от того, что вы хотите. Вы никогда не должны выводить созданный пользователем контент в браузер, который не был экранирован, IMHO.

0
ответ дан livingtech 22 August 2018 в 03:57
поделиться

Объявить отдельные функции в & lt; head & gt; и вызывать их в методе onClick. Если у вас есть лоты, вы можете использовать схему именования, которая их числивает, или передать целое число в вашем onClicks и иметь большой оператор переключения жира в функции.

1
ответ дан moonshadow 22 August 2018 в 03:57
поделиться

Используйте скрытые промежутки, по одному для каждого из параметров <%itemid%> и <%itemname%>, и записывайте их значения внутри них.

Например, диапазон для <%itemid%> будет выглядеть как <span id='itemid' style='display:none'><%itemid%></span> и в функции javascript SelectSurveyItem, чтобы выбрать аргументы из этих интервалов innerHTML.

10
ответ дан Shyam 22 August 2018 в 03:57
поделиться
  • 1
    Это действительно лучший ответ. Если вы поместите значения в & lt; input type = hidden id = & quot; itemid & quot; значение = & Quot; & Lt;%: Itemid% & GT; & Quot; & GT; и позже получить их с помощью jQuery $ ('# itemid'). val () нет необходимости в специальном лечении. – Sire 19 December 2010 в 20:41

Здесь ответы, что вы не можете избежать кавычек с использованием JavaScript и что вам нужно начать с экранированных строк.

Поэтому. JavaScript не может обрабатывать строку «Marge said». Я бы посмотрел, что это «Peter», и вам нужно, чтобы ваши данные были очищены, прежде чем предлагать их сценарию?

0
ответ дан Steve Perks 22 August 2018 в 03:57
поделиться

В зависимости от серверного языка вы можете использовать один из следующих:

.NET 4.0

string result = System.Web.HttpUtility.JavaScriptStringEncode("jsString")

Java

import org.apache.commons.lang.StringEscapeUtils;
...

String result = StringEscapeUtils.escapeJavaScript(jsString);

Python

import json
result = json.dumps(jsString)

PHP

$result = strtr($jsString, array('\\' => '\\\\', "'" => "\\'", '"' => '\\"', 
                                 "\r" => '\\r', "\n" => '\\n' ));

Ruby on Rails

<%= escape_javascript(jsString) %>
20
ответ дан Vitalii Fedorenko 22 August 2018 в 03:57
поделиться
  • 1
    Большое спасибо! – Gaurav M 24 February 2015 в 11:45
  • 2
    Для .NET ваш ответ представляется единственным способом. btn.OnClientClick = "return confirm('Are you sure?')"; является допустимым, но единственный способ поставить туда одну цитату (например, "return confirm('You're sure, right?');" - это кодировать ее ... ни обратная косая черта, ни &apos; не работают. – John Riehl 7 June 2016 в 20:39
8
ответ дан Dan 5 November 2018 в 03:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: