为什么java -version会返回旧版本?

时间:2009-10-14 15:53:55

标签: java

操作系统:Windows XP

我正在使用yuicompressor-2.4.2压缩一些CSS,然后再上传到我的服务器。 但是当我运行它时,会出现以下异常:

Exception in thread "main" java.lang.UnsupportedClassVersionError:
 com/yahoo/platform/yui/compressor/Bootstrap (Unsupported major.minor version 48.0)

所以我认为这是因为JRE。我输入的命令是cmd:java -version

它说:java版“1.3.1_01”但应该说“1.6.0_16”,因为我已经安装了最新版本。

如何让Java使用最新版本而不是旧版本?

11 个答案:

答案 0 :(得分:11)

设置环境变量JAVA_HOME,指向您拥有jdk 1.6.0的目录

set JAVA_HOME=your_path_to_jdk1.6
set PATH=%JAVA_HOME%/bin;.;..;%PATH%

那是来自命令窗口。您也可以从“我的电脑>属性>高级>环境变量”

进行操作

答案 1 :(得分:7)

在Windows上,JRE在Windows目录中安装java可执行文件,该文件应该是路径中的第一个java。这只是一个封装器,它在Windows注册表中查找Java主目录(对于Java 6应该是“%SystemDrive%\ Program Files \ Java \ jre6”)并使用那里的库运行。

运行%SystemRoot%\ system32 \ java -version,看看你得到了什么。如果 Java 6,则在%SystemRoot%\ system32之前的路径中有条目(实际上应该是第一个)。修复%PATH%变量,或者只要您想运行此版本的Java,就必须明确。

如果运行java的实例未报告Java 6,则表示未安装(正确)。卸载并重新尝试安装。

如果你因为PATH而遇到麻烦,那是因为你或你安装的某些软件与它有关;我建议使用默认设置,即先安装system32。如果使用默认值,一切正常。

此外,JRE本身根本没有使用%JAVA_HOME%。一些常见的Java应用程序如tomcat和ant尊重%JAVA_HOME%设置,所以也许yuicompressor也是如此。但这是事实上的惯例,而非标准。

答案 2 :(得分:6)

转到system32目录C:\ Windows \ System32并删除以下3个文件

  • java.exe
  • javaw.exe
  • javaws.exe

现在使用value = {jdk installation的root path}创建一个JAVA_HOME环境变量,并在PATH环境变量中添加jdk的bin文件夹的路径。

打开一个新的命令提示符并运行java -version以确认更改

答案 3 :(得分:2)

您应该修改PATH环境变量:

我的电脑>右键单击>属性>高级>环境变量

修改“路径”

最后附加1.6安装的路径:

;C:\jdk1.6.xxx\bin

并删除前一个(如果有)。

答案 4 :(得分:2)

在命令提示符}之后
例如

where java

删除where java C:\Program Files\Common Files\Oracle\Java\javapath C:\Program Files\Java\jdk-11.0.10\bin\java.exe 文件夹 然后关闭所有终端并在终端中写入C:\Program Files\Common Files\Oracle。它将显示正确的版本
为我工作

答案 5 :(得分:1)

将%JAVA_HOME%/ bin添加到PATH环境变量中,其中JAVA_HOME设置为JRE6u16目录

答案 6 :(得分:1)

首先通过以下命令,您应该知道在命令提示符中键入 public class Program { public static void Main() { var source = new ClassA(); var middleman = new ClassB(source); var subscribers = Enumerable.Range(0, 10) .Select(_ => new ClassC(middleman)) .ToArray(); Console.WriteLine("Fire 1!"); source.FireEvent(); Console.WriteLine("Fire 2!"); source.FireEvent(); Console.WriteLine("Fire 3!"); source.FireEvent(); Console.WriteLine("Fire 4!"); source.FireEvent(); Console.WriteLine("Fire 5!"); source.FireEvent(); } } class ClassA { public delegate void SomeAEventHandler(object sender, string msg); public event SomeAEventHandler SomeAEvent; public void FireEvent() { SomeAEvent?.Invoke(this, "Event A fired"); } } class ClassB { public event ClassA.SomeAEventHandler SomeAEvent; private ClassA _eventSource; public ClassB(ClassA eventSource) { _eventSource = eventSource; eventSource.SomeAEvent += SomeAEventHappened; } private void SomeAEventHappened(object sender, string msg) { var rnd = new Random().Next(10); if (rnd % 2 == 0) { // Instead of 'this' use 'sender' if needed SomeAEvent?.Invoke(this, msg); } } } class ClassC { private readonly ClassB _myMiddleman; public ClassC(ClassB middleman) { _myMiddleman = middleman; middleman.SomeAEvent += SomeAEventHappened; } private void SomeAEventHappened(object sender, string msg) { Console.WriteLine("ClassC got an event!"); } } 时运行的 .exe 文件

java

如上所示,cmd首先读取java

<块引用>

C:\Program Files\Common Files\Oracle\Java\javapath

所以转到上面的路径并删除java文件。 那么它应该可以正常工作

答案 7 :(得分:0)

您应该检查PATH环境变量。您安装的某些应用程序可能已将其版本的jre放在您的路径中。

答案 8 :(得分:0)

看起来旧的Java版本仍然在系统PATH环境变量(操作系统查找命令)或JAVA_HOME(其中yuicompressor可能查找java可执行文件)

如何更改这些变量取决于您的操作系统。

答案 9 :(得分:0)

如果您使用的是 windows 7/10 ,请转到命令提示符并键入

where java

删除下面显示的所有符号链接,而不是实际的安装目录。

答案 10 :(得分:0)

我有同样的问题。在System Properties > Environment Variables > System Variables > PATH中,确保没有其他与Java关联的路径。为此,请输入并检查Java路径。

where java

重新打开命令提示符,然后再次键入java -version。希望对您有所帮助。