Eclipse - нет Java (JRE) / (JDK) ... нет виртуальной машины



Answers

Скопируйте этот файл:

c:/Program Files/Java/jre(5,6,7..any version)/bin/javaw.exe

в папку Eclipse

* Примечание проверено только для Windows

Question

Я пытаюсь запустить Eclipse v3.5 (Galileo) для повторного запуска на моем компьютере - я запускал его раньше без проблем, но теперь я продолжаю получать эту ошибку:

Для запуска Eclipse должна быть доступна Java Runtime Environment (JRE) или Java Development Kit (JDK). Никакая виртуальная машина Java не была найдена после поиска в следующих местах: C: \ eclipse \ jre \ javaw.exe javaw.exe в вашей текущей PATH

Я только что сделал новую установку как JDK, так и SDK.

У меня Windows 7 (x64).

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

Я не могу запустить любой ipconfig / tracert / или ping.




Ну, этот ответ для тех, кто пробовал всех из них, еще не везет, может быть, это Android-студия или Eclipse я обычно делаю это, когда все остальное терпит неудачу.

  1. Найдите папку Android sdk и откройте файл android.bat с помощью текстового редактора
  2. вы найдете некоторые команды, подобные этим в начале файла,

set java_exe=

call lib\find_java.bat

if not defined java_exe goto :EOF

  1. Измените их на

    set java_exe= < путь к вашему файлу java.exe (можно найти в каталоге jdk folder / bin) >

  2. найти линии

rem Set SWT.Jar path based on current architecture (x86 or x86_64) for /f "delims=" %%a in ('"%java_exe%" -jar lib\archquery.jar') do set swt_path=lib\%%a

  1. Замените его на set swt_path= < путь к вашему соответствующему файлу swt.jar, для x86 он находится в sdk \ tools \ lib \ x86 и для x64 в sdk \ tools \ lib \ x86_64 >
  2. Сохраните и закройте файл, и теперь вам хорошо идти.



Оказалось, что все, что мне нужно было сделать, это изменить «путь» на:

«C: \ Windows \ system32; C: \ Windows; C: \ Windows \ System32 \ Wbem; C: \ Program Files (x86) \ Java; C: \ Program Files (x86) \ Java \ jdk1.6.0_14 \ bin "

это и получилось :)




Решение в двух словах:

Щелкните правой кнопкой мыши «Мой компьютер», выберите «Свойства», затем расширенные системные параметры, всплывающее окно «Свойства системы», вкладка «Дополнительно», «Переменные среды», «Окно переменных среды», в разделе «Системные переменные», найдите переменную PATH и отредактируйте (версия, jre6, jre7 и т. д.) во все, что вы используете, например, для моего: C:\Program Files\Java\jre7\bin




Откройте «Системные свойства Windows» с панели управления и найдите раздел переменных среды:

  • Добавьте запись JAVA_HOME, указывающую на каталог, где установлен JDK (например, C: \ Program Files \ Java \ jre6)
  • Найдите запись «Путь» и добавьте следующее в конец:% JAVA_HOME% \ bin
  • ОК изменения
  • Перезапустите eclipse, чтобы он знал о новой среде

Большинство инструментов Java теперь смогут найти вашу установку Java либо с помощью переменной среды JAVA_HOME, либо путем поиска java.exe / javaw.exe в переменной окружения Path.




JDK не устанавливает JVM в путь по умолчанию.

Если вам не нужны внешние инструменты для запуска, такие как ant, для запуска Eclipse недостаточно JDK. Самый простой способ установить такую ​​JVM - перейти на http://java.com и установить его, что он хочет установить.

Затем дважды щелкните двойной ключ Eclipse.




Я тоже столкнулся с этой проблемой. Мое дело следующее:

В текст:

HKEY_CURRENT_USER\Environment
    Path    REG_SZ    %JAVA_HOME%\bin;C:\ProgramFiles\nodejs

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
    JAVA_HOME    REG_SZ    C:\ProgramFiles\Java\jdk
    Path    REG_EXPAND_SZ    C:\bin;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\
WindowsPowerShell\v1.0\;C:\Program Files\Intel\DMIX;c:\Program Files (x86)\Microsoft SQL Server\90\Tools\binn\;C:\Progra
m Files (x86)\Perforce;C:\ProgramFiles\010 Editor;C:\Program Files\Microsoft SQL Server\130\Tools\Binn\;C:\ProgramFiles\
Git\cmd;C:\Program Files (x86)\Skype\Phone\

C:\Users\ssfang> echo %^JAVA_HOME% = "%^JAVA_HOME%" = %%JAVA_HOME%% %JAVA_HOME%
%JAVA_HOME% = "%^JAVA_HOME%" = %C:\ProgramFiles\Java\jdk% C:\ProgramFiles\Java\jdk

Я обнаружил, что их типы значения реестра Path различны, поэтому я проверил, является ли путь действительным или нет следующей командой:

C:\Users\ssfang> where node java
C:\ProgramFiles\nodejs\node.exe
INFO: Could not find "java".

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

C:\Users\ssfang> setx PATH %^JAVA_HOME%\bin;"C:\ProgramFiles\nodejs"

SUCCESS: Specified value was saved.

C:\Users\ssfang> reg query HKEY_CURRENT_USER\Environment /v Path

HKEY_CURRENT_USER\Environment
    Path    REG_EXPAND_SZ    %JAVA_HOME%\bin;C:\ProgramFiles\nodejs

C:\Users\ssfang> where node java
C:\ProgramFiles\nodejs\node.exe
INFO: Could not find "java".

C:\Users\ssfang>echo %PATH%
C:\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Fi
les\Intel\DMIX;c:\Program Files (x86)\Microsoft SQL Server\90\Tools\binn\;C:\Program Files (x86)\Perforce;C:\ProgramFile
s\010 Editor;C:\Program Files\Microsoft SQL Server\130\Tools\Binn\;C:\ProgramFiles\Git\cmd;C:\Program Files (x86)\Skype\
Phone\;%JAVA_HOME%\bin;C:\ProgramFiles\nodejs

Но в текущем процессе он не может распространять эти изменения на другие запущенные процессы.

Однако, если вы непосредственно изменяете переменные пользовательской среды в редакторе реестра,

эти изменения переменных среды не приводят к немедленным изменениям. Например, если вы запустите другую Командную строку после внесения изменений, переменные среды будут отражать предыдущие (а не текущие) значения. Изменения не вступят в силу до тех пор, пока вы не выйдете из системы, а затем снова войдете в систему.

Чтобы выполнить эти изменения без необходимости выхода из системы, передайте сообщение WM_SETTINGCHANGE всем окнам в системе, чтобы любые заинтересованные приложения (такие как Проводник Windows, Диспетчер программ, Диспетчер задач, Панель управления и т. Д.) Могли выполнить обновление.

Подробнее о том, как распространять переменные окружения в систему

Здесь я даю сценарий powershell для этого:

# powershell -ExecutionPolicy ByPass -File
# Standard, inline approach: (i.e. behaviour you'd get when using & in Linux)
# START /B CMD /C CALL "foo.bat" [args [...]]
# powershell -ExecutionPolicy ByPass -WindowStyle Hidden -File myScript.ps1 


<#
Add-Type @'

public class CSharp
{
    public static void Method(object[] first, object[] second)
    {
        System.Console.WriteLine("Hello world");
    }
}
'@
$a = 1..4;
[string[]]$b = "a","b","c","d";
[CSharp]::Method($a, $b);
#>


<#

#http://.com/questions/16552801/how-do-i-conditionally-add-a-class-with-add-type-typedefinition-if-it-isnt-add

#Problem Add-Type : Cannot add type. The type name 'PInvoke.User32' already exists.

if (-not ("MyClass" -as [type])) {
    add-type @"
    public class MyClass { }
"@
}


p.s. there's no Remove-Type; see this answer for more on how to best work around this limitation:
http://.com/questions/3369662/can-you-remove-an-add-ed-type-in-powershell-again

I think it will be wanted when debugging.
It is much simpler to close a tab in Console and open new one in PowerShell_ISE.exe or close PowerShell.exe.

Or

Start-Job -ScriptBlock {
    param([uri]$url,$OutputDir)
    # download and save pages
    Invoke-RestMethod $url | Out-File "$OutputDir\$($url.Segments[-1])" -Force
} -ArgumentList $link,$OutputDir

#>
if (-not ([System.Management.Automation.PSTypeName]'PInvoke.Program').Type)
{
    $sig=@"
using System;
using System.Runtime.InteropServices;
using System.Text;
using System.Collections.Generic;

// The global namespace is the "root" namespace: global::system will always refer to the .NET Framework namespace System.

///P/Invoke (Platform Invoke)
namespace PInvoke
{
    public static class User32
    {
        /// http://www.pinvoke.net/default.aspx/Constants/HWND.html
        // public const IntPtr HWND_BROADCAST = new IntPtr(0xffff);
        /// https://msdn.microsoft.com/en-us/library/windows/desktop/ms725497(v=vs.85).aspx
        /// http://www.pinvoke.net/default.aspx/Constants/WM.html
        public const UInt32 WM_SETTINGCHANGE = 0x001A;

        // SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, 0,    (LPARAM) "Environment", SMTO_ABORTIFHUNG,    5000, &dwReturnValue);

        /// https://msdn.microsoft.com/en-us/library/windows/desktop/ms644952(v=vs.85).aspx
        /// If the function succeeds, the return value is nonzero. 
        [System.Runtime.InteropServices.DllImport("user32.dll", EntryPoint = "SendMessageTimeout", SetLastError = true)]
        public static extern uint SendMessageTimeout(IntPtr hWnd, uint Msg, int wParam, string lParam, SendMessageTimeoutFlags fuFlags, uint uTimeout, out int lpdwResult);
    }

    [Flags]
    public enum SendMessageTimeoutFlags : uint
    {
        SMTO_NORMAL = 0x0,
        SMTO_BLOCK = 0x1,
        SMTO_ABORTIFHUNG = 0x2,
        SMTO_NOTIMEOUTIFNOTHUNG = 0x8,
        SMTO_ERRORONEXIT = 0x20
    }

    public class Program
    {
        public static void Main(string[] args)
        {
            //int innerPinvokeResult;
            //uint pinvokeResult = User32.SendMessageTimeout(User32.HWND_BROADCAST, User32.WM_SETTINGCHANGE, 0, "Environment", SendMessageTimeoutFlags.SMTO_NORMAL, 1000, out innerPinvokeResult);
            Console.WriteLine("Over!!!!!!!!!!!!!!!!!!!!!!!!!");
        }
    }
}
"@

    Add-Type -TypeDefinition $sig
}


## [PInvoke.Program]::Main([IntPtr]::Zero);

$innerPinvokeResult=[int]0
[PInvoke.User32]::SendMessageTimeout([IntPtr]0xffff, [PInvoke.User32]::WM_SETTINGCHANGE, 0, "Environment", [PInvoke.SendMessageTimeoutFlags]::SMTO_NORMAL, 1000, [ref]$innerPinvokeResult);

Setx setx [/ s [/ u [] [/ p []]]] [/ m]

/m Specifies to set the variable in the system environment. The default setting is the local environment



если после добавления C: \ Program Files \ Java \ jdk1.8.0_92 \ bin в переменной PATH в переменных среды eclipse дал ту же ошибку

проверьте файл настроек конфигурации eclipse, который находится в папке eclipse, вы должны увидеть тот же путь jdk, который у вас есть в C: \ program Files

Надеюсь, это поможет.




У меня была такая же проблема (Windows 7 x64, 64-битный JDK, 32bit Eclipse), и я нашел 2 решения:

  • Установите 64-разрядную версию Eclipse (ее можно найти, щелкнув вкладку «Разработка сборки» на странице загрузки).
  • Установите 32-разрядную версию JDK.



Существует более простой способ сделать это. Просто запустите cmd x64. Введите cmd x64 в строку поиска в стартовом меню, и вы найдете ее :) Или, альтернативно, вы должны установить путь к программным файлам (x86) ... Например, C: \ Program Files (x86) \ Java \ jre6




Когда я копировал только javaw, произошла вторая ошибка, нет файла java.dll, когда я его тоже скопировал, затмение не запустилось, я сделал то, что я скопировал всю папку jdk в папку eclipse и переименовал id в jre. Задача решена.




Не полагайтесь на переменную пути Windows, потому что она изменяется практически в каждом обновлении. Например, хром (32-битный на 64-битной машине) java-обновление заменяет системную 64-битную JVM 32-разрядной JVM. Также обратите внимание, что эта запись должна быть последней в eclipse.ini, иначе она не будет работать. И - как указано иначе - переменная JAVA_HOME НЕ оценивается eclipse.exe.

даже если у вас JAVA_HOME и Path настроены правильно, у них может возникнуть такая проблема, поэтому самый простой способ - открыть eclipse.ini в папке установки eclipse

-vm

C: \ Program Files \ Java \ jdk1.7.0_71 \ bin \ javaw.exe

замените C: \ Program Files \ Java \ jdk1.7.0_71 \ bin \ javaw.exe на ваш путь jdk или jre




Отредактировал мой файл eclipse.ini для обновления недавно обновленного JDK. Раньше у меня был jdk1.7.0_09 и теперь обновлен до jdk1.7.0_80, а eclipse выбрал эту ошибку.

Для запуска Eclipse должна быть доступна Java Runtime Environment (JRE) или Java Development Kit (JDK). Никакая виртуальная машина Java не была найдена после поиска в следующих местах: C: / Program Files / Java / jdk1.7.0_09 / bin / javaw

После обновления eclipse.ini из,

-vm
C:/Program Files/Java/jdk1.7.0_09/bin/javaw

в

-vm
C:/Program Files/Java/jdk1.7.0_80/bin/javaw

Eclipse отлично работает.




Причина, по которой вы получаете эту ошибку, заключается в том, что для запуска eclipse требуется JRE, который он не может найти. Первое место, которое он ищет, это текущий каталог, затем файл eclipse.ini и, наконец, системный путь. Поэтому, если он не может найти правильный jvm (версии бит разные) через любое из этих трех мест, это шпаргалки

Рекомендуемый способ - отредактировать файл eclipse.ini и сказать eclipse, где именно искать vm / jre, включив эту строку в файл:

-vm
[путь к вашему java.exe] (который обычно находится под «C: \ Program Files \ Java \ jre7 \ bin»)

PS Чтобы отредактировать eclipse.ini, вам может потребоваться переместить его, отредактировать, а затем вставить обратно

Источник: - wiki




Когда у меня была такая проблема, у меня был x64 JDK + JRE, установленный с x86 Eclipse. Поэтому установка x86 JDK + JRE решила мою проблему :) Также я создал папку jre папке eclipse и скопировал папку bin из моего локального пути C:\Program Files (x86)\Java\jre7 в ..\eclipse\jre\ .




Links