Module: JavaClass

Defined in:
lib/javaclass.rb,
lib/javaclass/java_name.rb,
lib/javaclass/classlist/list.rb,
lib/javaclass/classfile/references.rb,
lib/javaclass/classfile/class_magic.rb,
lib/javaclass/classlist/class_entry.rb,
lib/javaclass/classfile/access_flags.rb,
lib/javaclass/classlist/jar_searcher.rb,
lib/javaclass/classfile/class_version.rb,
lib/javaclass/classfile/constant_pool.rb,
lib/javaclass/classlist/package_entry.rb,
lib/javaclass/classpath/jar_classpath.rb,
lib/javaclass/classfile/constants/base.rb,
lib/javaclass/classfile/constants/value.rb,
lib/javaclass/classpath/folder_classpath.rb,
lib/javaclass/classfile/java_class_header.rb,
lib/javaclass/classpath/composite_classpath.rb,
lib/javaclass/classpath/java_home_classpath.rb,
lib/javaclass/classfile/constants/double_reference.rb,
lib/javaclass/classfile/constants/single_reference.rb

Overview

Main entry point for class file parsing.

Author

Peter Kofler

Defined Under Namespace

Modules: ClassFile, ClassList, Classpath Classes: JavaName

Class Method Summary collapse

Class Method Details

.classpath(path) ⇒ Object

Parse the given path variable path and return a chain of class path elements.



30
31
32
# File 'lib/javaclass.rb', line 30

def self.classpath(path)
  full_classpath(nil, path)
end

.disassemble(data) ⇒ Object

Read and disassemble the given class inside data (byte data).



25
26
27
# File 'lib/javaclass.rb', line 25

def self.disassemble(data)
  ClassFile::JavaClassHeader.new(data)
end

.environment_classpathObject

Parse and scan the system classpath. Needs JAVA_HOME set. Uses environment CLASSPATH if set.



35
36
37
# File 'lib/javaclass.rb', line 35

def self.environment_classpath
  full_classpath(ENV['JAVA_HOME'], ENV['CLASSPATH'])
end

.full_classpath(javahome, path = '') ⇒ Object

Parse the given path variable path and return a chain of class path elements together with javahome if any.



40
41
42
43
44
45
# File 'lib/javaclass.rb', line 40

def self.full_classpath(javahome, path='')
  cp = Classpath::CompositeClasspath.new
  cp.add_element(Classpath::JavaHomeClasspath.new(javahome)) if javahome
  path.split(File::PATH_SEPARATOR).each { |cpe| cp.add_file_name(cpe) } if path
  cp
end

.load_cp(classname, classpath) ⇒ Object

Read and disassemble the given class classname from classpath .



20
21
22
# File 'lib/javaclass.rb', line 20

def self.load_cp(classname, classpath)
  disassemble(classpath.load_binary(classname))
end

.load_fs(filename) ⇒ Object

Read and disassemble the given class from filename (full file name).



10
11
12
# File 'lib/javaclass.rb', line 10

def self.load_fs(filename)
  disassemble(File.open(filename, 'rb') { |io| io.read } )
end

.parse(filename) ⇒ Object



14
15
16
17
# File 'lib/javaclass.rb', line 14

def self.parse(filename)
  warn 'Deprecated method JavaClass::parse will be removed in next release. Use method load_fs instead.'
  load_fs(filename)
end