如果你安装了Java 8并且运行64和最新版本,你应该有一个名为(jre1.0.0_25)的文件夹
可在此处找到:C:\Program Files (x86)\Java
你如何在Java下获取名称文件的名称,这个名称会随着时间而改变(现在是jre1.0.0_25)?
我试过
New DirectoryInfo("C:\Program Files (x86)\Java\").Name
但它不起作用。
编辑:
提出了几个问题。
对此的一些指导将非常感激。 提前谢谢
更新:我正在尝试将以下解决方案转换为函数,以便将其输出到数据库。
Private Function java() As String
Dim sourceDir = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86), "Java")
Dim dirInfo = New DirectoryInfo(sourceDir)
For Each d In dirInfo.GetDirectories()
Console.WriteLine(d.Name)
Next
java = Console.ReadLine()
'Return dirInfo.ToString
End Function
现在尝试不同的东西我可以让代码显示为空白或路径。 我哪里错了?
答案 0 :(得分:0)
我们需要确切地知道它是如何“不起作用的”。然而...
您需要查看DirectoryInfo.GetDirectories()的结果,如下所示:
Imports System.IO
Module Module1
Sub Main()
Dim sourceDir = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86), "Java")
Dim dirInfo = New DirectoryInfo(sourceDir)
For Each d In dirInfo.GetDirectories()
Console.WriteLine(d.Name)
Next
Console.ReadLine()
End Sub
End Module
,在我的电脑上输出:
jre1.8.0_25
jre6
jre7
你必须决定如何找出你想要的目录。
我使用Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86)
,因为如果Windows是不同的语言版本,“Program Files(x86)”目录可能会被命名为其他目录。但是,Java安装程序允许将其安装在其他位置,因此如果您想使其更加强大,则必须调查如何找到安装。
但是如果想要查找当前安装的Java版本,您应该检查注册表:Deploying the JRE on Windows的更多信息 - 我相信你可以做一些寻找是否仍然适用于Java 8。
检查JAVA.DLL
一些注意事项:
Environment.SpecialFolder.ProgramFiles
指向与Environment.SpecialFolder.ProgramFilesX86
相同的位置,那么它将无法检测Java的x64版本8.0
(phew!我认为目录名称为1.8,java -version
报告“java版本1.8.0_25”。< / LI>
我想出了这个:
Function GetMaxJavaVersion() As Decimal
' N.B. If this program is run as x86 then the 64-bit Program Files directory will not be accessed even
' with Environment.SpecialFolder.ProgramFiles
Dim sourceDir = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86), "Java")
' search in all the subdirectories for "java.dll"
Dim javaDlls = Directory.GetFiles(sourceDir, "java.dll", SearchOption.AllDirectories)
' arrange it so that 0 is returned if not found
Dim versions As New List(Of Decimal) From {0D}
For Each jd In javaDlls
Console.WriteLine(jd)
Dim versionInfo = FileVersionInfo.GetVersionInfo(jd)
versions.Add(CDec(String.Format("{0}.{1}", versionInfo.ProductMajorPart, versionInfo.ProductMinorPart)))
Next
Return versions.Max
End Function
我确定你可以修改它以检查x86和“普通”程序文件目录。