I have placed a java file and compiled it with out a main method in JRE/lib/ext directory. I want to access the file from a local Java file with out even mentioning about importing it in java.
C:\Program Files\Java\jre1.8.0_60\lib\ext>cat TestClass.java
class TestClass
{
public void displayMessage()
{
System.out.println("Hello World of Trials");
}
}
C:\Program Files\Java\jre1.8.0_60\lib\ext>javac TestClass.java
C:\Program Files\Java\jre1.8.0_60\lib\ext>ls -lrt TestClass.*
-rwxrwxr--+ 1 Madhuri None 103 Jun 17 12:23 TestClass.java
-rwxrwx---+ 1 Administrators None 418 Jun 17 12:25 TestClass.class
C:\Program Files\Java\jre1.8.0_60\lib\ext>
C:\Users\Madhuri\Documents>cat TestArt.java
class TestArt
{
public static void main(String args[])
{
TestClass tc = new TestClass();
tc.displayMessage();
}
}
C:\Users\Madhuri\Documents>javac TestArt.java
TestArt.java:5: error: cannot find symbol
TestClass tc = new TestClass();
^
symbol: class TestClass
location: class TestArt
TestArt.java:5: error: cannot find symbol
TestClass tc = new TestClass();
^
symbol: class TestClass
location: class TestArt
2 errors
C:\Users\Madhuri\Documents>
Flow of class loading for a simple program
From the above answer, i thought it would be possible. I tried compiling with verbose option and understood it only accepts JAR files.
C:\Users\Madhuri\Documents>javac -verbose TestArt.java
[parsing started RegularFileObject[TestArt.java]]
[parsing completed 37ms]
[search path for source files: .]
[search path for class files: C:\Program Files\Java\jdk1.8.0_60\jre\lib\resources.jar,C:\Program Files\Java\jdk1.8.0_60\jre\lib\rt.jar,C:\Program Files\Java\jdk1.8.0_60\jre\lib\sunrsasign.jar,C:\Program Files\Java\jdk1.8.0_60
jre\lib\jsse.jar,C:\Program Files\Java\jdk1.8.0_60\jre\lib\jce.jar,C:\Program Files\Java\jdk1.8.0_60\jre\lib\charsets.jar,C:\Program Files\Java\jdk1.8.0_60\jre\lib\jfr.jar,C:\Program Files\Java\jdk1.8.0_60\jre\classes,C:\Prog
am Files\Java\jdk1.8.0_60\jre\lib\ext\access-bridge-64.jar,C:\Program Files\Java\jdk1.8.0_60\jre\lib\ext\cldrdata.jar,C:\Program Files\Java\jdk1.8.0_60\jre\lib\ext\dnsns.jar,C:\Program Files\Java\jdk1.8.0_60\jre\lib\ext\jacce
s.jar,C:\Program Files\Java\jdk1.8.0_60\jre\lib\ext\jfxrt.jar,C:\Program Files\Java\jdk1.8.0_60\jre\lib\ext\localedata.jar,C:\Program Files\Java\jdk1.8.0_60\jre\lib\ext\nashorn.jar,C:\Program Files\Java\jdk1.8.0_60\jre\lib\ex
\sunec.jar,C:\Program Files\Java\jdk1.8.0_60\jre\lib\ext\sunjce_provider.jar,C:\Program Files\Java\jdk1.8.0_60\jre\lib\ext\sunmscapi.jar,C:\Program Files\Java\jdk1.8.0_60\jre\lib\ext\sunpkcs11.jar,C:\Program Files\Java\jdk1.8
0_60\jre\lib\ext\zipfs.jar,.]
[loading ZipFileIndexFileObject[C:\Program Files\Java\jdk1.8.0_60\lib\ct.sym(META-INF/sym/rt.jar/java/lang/Object.class)]]
[loading ZipFileIndexFileObject[C:\Program Files\Java\jdk1.8.0_60\lib\ct.sym(META-INF/sym/rt.jar/java/lang/String.class)]]
[checking TestArt]
[loading ZipFileIndexFileObject[C:\Program Files\Java\jdk1.8.0_60\lib\ct.sym(META-INF/sym/rt.jar/java/io/Serializable.class)]]
[loading ZipFileIndexFileObject[C:\Program Files\Java\jdk1.8.0_60\lib\ct.sym(META-INF/sym/rt.jar/java/lang/AutoCloseable.class)]]
TestArt.java:5: error: cannot find symbol
TestClass tc = new TestClass();
^
symbol: class TestClass
location: class TestArt
TestArt.java:5: error: cannot find symbol
TestClass tc = new TestClass();
^
symbol: class TestClass
location: class TestArt
[total 570ms]
2 errors
C:\Users\Madhuri\Documents>
Do i need to create a JAR file in ext dir to load it automatically or else is there any way to load a class file directly by the program ??