class JavaClass::Classpath::JavaHomeClasspath

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

Constants

RT_JAR

Public Class Methods

new(javahome) click to toggle source

Create a classpath from this javahome directory.

Calls superclass method JavaClass::Classpath::JarClasspath::new
# 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

Public Instance Methods

additional_classpath() click to toggle source

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

# 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

Private Instance Methods

exist?(file) click to toggle source
# File lib/javaclass/classpath/java_home_classpath.rb, line 44
def exist?(file)
  FileTest.exist?(file) && FileTest.file?(file)
end