Наша компания, недавно обновленная от Windows XP до Предприятия Windows 7. Установка JDK больше не устанавливает user.home на полный путь пользовательского каталога, но вместо этого устанавливает user.home на %userprofile%
. Это вызывает много проблем с приложениями, такими как Eclipse, Знаток, и т.д. Я теперь должен установить-Duser.home в JVM для каждого приложения. Кто-либо еще испытал это? Есть ли фиксация для этого? Это было бы связано с установкой Предприятия Windows 7? Я попробовал 1,5 JDK и 1,6 JDK.
Вот список свойств. Отметьте user.home:
-- listing properties --
java.runtime.name=Java(TM) SE Runtime Environment
sun.boot.library.path=C:\Program Files\Java\jre6\bin
java.vm.version=16.0-b13
java.vm.vendor=Sun Microsystems Inc.
java.vendor.url=http://java.sun.com/
path.separator=;
java.vm.name=Java HotSpot(TM) Client VM
file.encoding.pkg=sun.io
user.country=US
sun.java.launcher=SUN_STANDARD
sun.os.patch.level=
java.vm.specification.name=Java Virtual Machine Specification
user.dir=C:\Users\politesp\Desktop
java.runtime.version=1.6.0_18-b07
java.awt.graphicsenv=sun.awt.Win32GraphicsEnvironment
java.endorsed.dirs=C:\Program Files\Java\jre6\lib\endorsed
os.arch=x86
java.io.tmpdir=C:\Users\politesp\AppData\Local\Temp\
line.separator=
java.vm.specification.vendor=Sun Microsystems Inc.
user.variant=
os.name=Windows 7
sun.jnu.encoding=Cp1252
java.library.path=C:\WINDOWS\system32;.;C:\WINDOWS\Sun\...
java.specification.name=Java Platform API Specification
java.class.version=50.0
sun.management.compiler=HotSpot Client Compiler
os.version=6.1
user.home=%userprofile%
user.timezone=
java.awt.printerjob=sun.awt.windows.WPrinterJob
file.encoding=Cp1252
java.specification.version=1.6
user.name=politesp
java.class.path=.
java.vm.specification.version=1.0
sun.arch.data.model=32
java.home=C:\Program Files\Java\jre6
java.specification.vendor=Sun Microsystems Inc.
user.language=en
awt.toolkit=sun.awt.windows.WToolkit
java.vm.info=mixed mode, sharing
java.version=1.6.0_18
java.ext.dirs=C:\Program Files\Java\jre6\lib\ext;C:...
sun.boot.class.path=C:\Program Files\Java\jre6\lib\resour...
java.vendor=Sun Microsystems Inc.
file.separator=\
java.vendor.url.bug=http://java.sun.com/cgi-bin/bugreport...
sun.cpu.endian=little
sun.io.unicode.encoding=UnicodeLittle
sun.desktop=windows
sun.cpu.isalist=pentium_pro+mmx pentium_pro pentium+m...
Обновление:
Используя ссылку на ошибку от Andreas_D я обнаружил:
Значение HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Desktop
%userprofile %\Desktop на моей установке Предприятия Windows 7.
Когда я изменяю значение этого ключа к C:\Users\politesp\Desktop
, мой user.home решает правильно. Какая-либо идея, почему это происходит?
Проблема заключается в том, что пользователь в Windows называется DefureAppPool. Однако он не появляется нигде в диалогах безопасности. Однако он является фактическим пользователем. Проблема заключалась в том, что этот пользователь должен быть частью группы PerformureMonureUsers, поскольку моя веб-служба использует PerformureCounters. Оказывается, вы должны сделать это из командной строки.
net localgroup «Performance Monitor Users» DefureAppPool/add
Время от времени это не работает и дает вам ошибку: «Нет такого пользователя или группы: DefureAppPool»
Чтобы добавить пользователя другим способом:
С чистым Javascript, вы должны будете циклически через каждый вариант, и проверить значение его по отдельности.
// Get all options within <select id='foo'>...</select>
var op = document.getElementById("foo").getElementsByTagName("option");
for (var i = 0; i < op.length; i++) {
// lowercase comparison for case-insensitivity
(op[i].value.toLowerCase() == "stackoverflow")
? op[i].disabled = true
: op[i].disabled = false ;
}
Без включения нецелевых элементов:
// Get all options within <select id='foo'>...</select>
var op = document.getElementById("foo").getElementsByTagName("option");
for (var i = 0; i < op.length; i++) {
// lowercase comparison for case-insensitivity
if (op[i].value.toLowerCase() == "stackoverflow") {
op[i].disabled = true;
}
}
С помощью jQuery можно сделать это с помощью одной строки:
$("option[value='stackoverflow']")
.attr("disabled", "disabled")
.siblings().removeAttr("disabled");
Без включения нецелевых элементов:
$("option[value='stackoverflow']").attr("disabled", "disabled");
Обратите внимание, что регистр не является нечувствительным. «StackOverflow» не будет равен «stackoverflow». Чтобы получить совпадение без учета регистра, необходимо выполнить циклический перебор каждого из них, преобразовав значение в нижний регистр, а затем выполнить проверку:
$("option").each(function(){
if ($(this).val().toLowerCase() == "stackoverflow") {
$(this).attr("disabled", "disabled").siblings().removeAttr("disabled");
}
});
Без включения нецелевых элементов:
$("option").each(function(){
if ($(this).val().toLowerCase() == "stackoverflow") {
$(this).attr("disabled", "disabled");
}
});
-121--1176161- Большая часть разделов реестра расположена по адресу:
HKEY _ CURRENT _ USER\Software\Microsoft\Windows Папки
начинались с % userprofile%
. Я обновил все разделы реестра, которые начинались с % userprofile%
, чтобы начать с C :\Users\myusername
. Я проверил в Windows XP, что пути действительно жестко закодированы и что % userprofile%
не используется. ИТ-специалисты упомянули, что разделы реестра по умолчанию используют % userprofile%
из-за профиля по умолчанию, используемого в Windows 7. JVM ожидает, что путь рабочего стола будет жестко закодирован. Он не будет оценивать переменные среды.
Можно по одному обновить разделы реестра или экспортировать папку и изменить разделы. Вот как можно экспортировать и импортировать разделы реестра:
regedit
. Откроется редактор реестра. HKEY _ CURRENT _ USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders
. Shell Folders
и выберите Export. Shell Folders
в качестве имени файла и сохраните файл. % userprofile%
на C :\\Users\\your username
. Сохраните и закройте файл. Shell Folders.reg
и нажмите кнопку «Открыть». Shell Folders.reg
с рабочего стола. Это выглядит для меня, как будто - по любым причинам - % UserProfile%
не был установлен на значение. Что вы получаете, если вы набрали Echo% UserProfile%
в командной оболочке?
Может быть, это не функция ОС, а проблема конфигурации. На моей машине (Vista) % UserPROFILE%
решает в мой домашний каталог, и одинаково для недвижимости Java user.home
Редактирование
Вот проблема Vista / Windows7 с пользовательской помощью user.home: ошибка . Может не решить вашу проблему может дать вам идею ..