Class: JavaClass::Classpath::JavaHomeClasspath

Inherits:
JarClasspath show all
Defined in:
lib/javaclass/classpath/java_home_classpath.rb

Overview

Abstraction of the Java boot CLASSPATH. May return additional classpath elements for endorsed libs. This is a leaf in the classpath tree.

Author

Peter Kofler

Constant Summary collapse

RT_JAR =
'rt.jar'

Instance Method Summary collapse

Methods inherited from JarClasspath

#count, #includes?, #jar?, #load_binary, #names, valid_location?

Methods inherited from FileClasspath

#==, #elements, #jar?, #to_key, #to_s

Constructor Details

#initialize(javahome) ⇒ JavaHomeClasspath

Create a classpath from this javahome directory.



14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/javaclass/classpath/java_home_classpath.rb', line 14

def initialize(javahome)
  if exist?(rtjar=File.join(javahome, 'lib', RT_JAR))
    super(rtjar)
  elsif exist?(rtjar=File.join(javahome, 'jre', 'lib', RT_JAR))
    super(rtjar)
  elsif exist?(rtjar=File.join(javahome, 'lib', 'classes.zip')) # Java 1.1 home with lib/classes.zip
    super(rtjar)
  else
    raise IOError, "#{RT_JAR} not found in java home #{javahome}"
  end
  @lib = File.dirname(rtjar)
end

Instance Method Details

#additional_classpathObject

Return list of additional classpath elements, e.g. endorsed libs found in this Java Home.



28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/javaclass/classpath/java_home_classpath.rb', line 28

def additional_classpath
  list = super

  if FileTest.exist? ext=File.join(@lib, 'ext')
    current = Dir.getwd
    Dir.chdir ext

    list += Dir['*.jar'].collect { |jar| File.join(ext, jar) }

    Dir.chdir current
  end
  list
end