Причина, которая static readonly
используется вместо const
, должна использовать с неуправляемым кодом, как обозначено Microsoft здесь в Общая Исходная Общеязыковая инфраструктура 2.0 Выпуска . Файл для взгляда на sscli20\clr\src\bcl\system\string.cs
.
Пустые постоянные хранения значение пустой строки. Мы должны вызвать конструктора String так, чтобы компилятор не отмечал это как литерал.
отмечание это как литерал означало бы, что не обнаруживается как поле, к которому мы можем получить доступ от собственного компонента.
я нашел эту информацию от эта удобная статья в CodeProject.
Ответ - «нет», нет способа сделать JDK JVM по умолчанию при установке.
Как указывают другие ответы, вы можете настроить свой путь и JAVA_HOME, чтобы указать на JDK или на другую JVM полностью. Фактически это то, что в первую очередь делает установка Java.
Однако ваша проблема в том, что вы хотите, чтобы был найден tools.jar. Для этого вы можете скопировать его в каталог ext под вашей JVM по умолчанию. Проверьте файловую структуру JDK здесь . Это, вероятно, сработает.
С другой стороны, если изменение переменных JAVA_HOME и PATH для Java кажется вам неприятным, помните, что это всего лишь одна из тех вещей, которые мы делаем, чтобы держать нас в курсе
Попробуйте изменить переменную среды JAVA_HOME, чтобы она указывала на JDK, а не на JRE.
В качестве альтернативы или, возможно, дополнительно добавьте запись PATH в каталог bin JDK перед любой из системных каталогов Windows.
Я подозреваю, что JAVA_HOME достаточно, чтобы Ant заработал, но иногда приятно получить JDK-версию java и т. д. на пути, так что когда вы просто запускаете java
из командной строки вы получите точно ту же версию, что и при запуске javac
.
Вероятно, вы могли бы написать сценарий WSH для автоматического изменения конфигурации пути.
Этот сценарий JScript просто выводит некоторую информацию:
//file: jdk.js usage: cscript /Nologo jdk.js
var objShell = WScript.CreateObject("WScript.Shell");
function setJdk(version) {
try {
var jdk = objShell.RegRead("HKEY_LOCAL_MACHINE\\SOFTWARE\\" +
"JavaSoft\\Java Development Kit\\" + version + "\\JavaHome");
if(jdk != null && jdk != "") {
jdk += "\\bin";
var path = objShell.RegRead("HKEY_CURRENT_USER\\Environment\\Path");
path = jdk + ";" + path;
WScript.Echo("Could set PATH to " + path + "\n");
}
} catch(err) { /*probably key does not exist*/ }
}
setJdk("1.7");
setJdk("1.6");
setJdk("1.5");
Существует метод RegWrite , который может использоваться для записи в реестр. Требуется немного поработать, чтобы определить последнюю версию и перенастроить путь, удалить устаревшие записи и отсортировать системные пути и пути пользователя. Несомненно, его также можно использовать для установки JAVA_HOME
. Запись JDK должна появиться перед каталогом system32
, поскольку установщик JRE помещает туда java.exe
.
(я не уверен на 100%, что оболочка может уловить такие изменения или потребуется перезагрузка переменной reboot / env.)
Обычно это делается путем установки переменной среды JAVA_HOME
в корневой каталог JDK, который вы хотите использовать.
Например, из командной строки или командного файла, который вы хотите использовать. просто сделайте что-нибудь вроде:
set JAVA_HOME=C:\Program Files\Java\jdk1.6.0_14
Однако, чтобы установить JAVA_HOME навсегда, добавьте его в переменные среды на вкладке Дополнительно на странице свойств для Мой компьютер .
Очевидно Eclipse может компилироваться без tools.jar
. Я предполагаю, что у них есть специальная команда javac
, которая может работать с JRE (а не с JDK); это может быть причиной, по которой они могут перечислить свои предупреждения.
В любом случае, я бы пошел стандартным путем (как предложено выше) и установил JDK в вашей системе. Вы даже можете запустить Eclipse с этим конкретным JDK (без каких-либо изменений JAVA_HOME
), настроив файл eclipse.ini
(см. Эти инструкции ).