You could keep your immutable list in a separate class, like People.GUYS: public class People { public static final List<Guy> GUYS = ImmutableList.of(Guy.TOM, Guy.DICK, Guy.HARRY); } This way you can still keep the individual guys in the Guy class: public abstract class Person { public static final class Guy extends...
Simply said, no (unless you unintentionally load the wrong one). Classes are loaded by their fully-qualified class-name, which includes the package (e.g. x1.y1.Class)...
java,resources,classloader,java-8,resource-leak
I made a simple test program to verify the actual behavior: System.out.println(System.getProperty("java.version")); URL testURL = new URL("test", null, 0, "/", new URLStreamHandler() { protected URLConnection openConnection(URL u) throws IOException { System.out.println("creating connection to "+u); return new URLConnection(u) { InputStream is; public void connect(){} @Override public InputStream getInputStream() throws IOException {...
java,classloader,esb,jboss-esb
Stupid mistake... I had 2 copies of jbossws-native-core. One in .esb file, second one in lib folder on my Jboss server. Adding a <scope>provided</scope> to jbossws-native-core dependency solved my problem....
You can do it outside the class hierarchy. Have a utility function that uses reflection to find all descendants of Parent and then adds them to your list.
Its a little complicated, there is a full example in this loadNativeLibrary() method. A few notes: Try System.loadLibrary(libName) first so your library can be externalized. Most Linux packages will want to do this. You will need to setup some method of arch and operating system native file storage in your...
Answers: As far as I understand the first class loader is the Bootstrap class loader (BCL). Is it loaded by the JVM? This is not explicitly defined, but will be most likely written in a native code. Afterwards, the BCL loads rt.jar library, and the Extension Class Loader (ECL). Yes...
Multiple ClassLoaders are commonly encountered in Java EE. The Java EE application servers loads classes from deployed War/EAR by a tree of classloaders. The reason why they do it in this way is to isolate one application from other applications but still sharing classes between deployed modules. If you want...
java,grails,memory-leaks,groovy,classloader
Groovy is a dynamic language, every method call is dispatched dynamically. To optimise that Groovy creates a MetaClass for every java.lang.Class in the MetaClassRegistry. These MetaClass instances are created on-demand and stored using Weak references. The reason you see a lot of org.codehaus.groovy.runtime.metaclass.MetaMethodIndex.Entry is because Groovy is storing a map...
you can create instance and call method as below: you are already using your own class loader so method loadClass("Hidden") will return Class class object referring to Your Hidden class. try { Class<?> c = loader.loadClass("Hidden"); // create instance of Class class referring Hidden class using your class loader object...
java,classloader,java-bytecode-asm
I assume that your class loading is performed as some sort of pushing class files. You should however rather pull them. To explain what I mean by this, let us look at a short example of normal Java class loading: class Main { public static void main(String[] args) { new...
java,classloader,classnotfoundexception,urlclassloader
I had to point the ClassLoader to the bin folder instead of the bin/plugins folder
web-applications,jar,classpath,classloader,web-inf
To investigate, first try to print all locations where your ClassLoader tries to load classes/resources: ((URLClassLoader) getClass().getClassLoader()).getURLs(); assuming that the Resign's ClassLoader extends URLClassLoader. It should contain your folder....
Once it's compiled, you will need to load the Class object and then invoke the main(String[]) method. To capture the stdout, you will need to use System.setOut. private String invokeClass(String className) throws URISyntaxException, IOException, ReflectiveOperationException { Class<?> clazz = Class.forName(className); // Alternatively, you can load the new class with a...
I'm not sure I correctly understand your problem. But, with the hint by Hovercraft Full of Eels, the following code is written. You may add additional types of logs. Hope this helpful. import java.io.PrintStream; import java.util.ArrayList; public class Logger { public static void main(String[] args) { // creating vehicles Vehicle[]...
getResource(".") will, in some cases, return a URL pointing to the directory that class file is in. This thread describes the behaviour as: a URL pointing to the directory in the class path used to load the class if the class is loaded from a directory, or null when loaded...
Your Java file is missing an import statement for java.util.List, which is why it's failing to compile. Unlike String and Integer, List is not in the java.lang package. You need to import java.util.List, not java.lang.List. If I'm understanding your scenario correctly, your other program is generating the import statements and...
java,reflection,classloader,urlclassloader
You should override ClassLoader(ClassLoader parent) constructor in your CustomClassLoader and pass your URLClassLoader there: class CustomClassLoader extends ClassLoader { public CustomClassLoader(URLClassLoader parent, ...your data...) { super(parent); ... } } CustomClassLoader customClassLoader = new CustomClassLoader(jarLoader, ...); ...
The protected modifier specifies that the member can only be accessed within its own package (as with package-private) and, in addition, by a subclass of its class in another package. If you want to access the B.f(), you should have the C class defined in the same package as B....
java,jenkins,classpath,classloader
Having read through the Javadoc for AntClassLoader it seems the solution was a lot easier than I was expecting and so I've written the following code which can be used print the classpath for a Jenkins plugin. AntClassLoader cl = (AntClassLoader) getClass().getClassLoader(); String[] classpath = cl.getClasspath().split(":"); for (String classpathElement :...
That rt.jar is part of the bootstrap classpath, a parent of the usual classpath you already know and that you configure when you use the -cp option (you can actually change the bootstrap classpath too using the -Xbootclasspath option to load, for example, a custom Java runtime). See Oracle documentation...
android,plugins,classloader,dexclassloader
Not that it really matters (As nobody is actually viewing this), or that I even understand what's going on, but deleting the corresponding file of the plugin in dexTemp.getAbsolutePath() before reloading it solves the problem. PS: Tumbleweed-Badge, YAY! ...
java,android,class,classloader
getProtectionDomain() is not implemented in Android's version of Java http://developer.android.com/reference/java/lang/Class.html#getProtectionDomain%28%29 Also, the ProtectionDomain class is marked as "Legacy security code; do not use." http://developer.android.com/reference/java/security/ProtectionDomain.html I assume this only exists in Android Java to maintain compilation compatibility....
java,maven,dependencies,classpath,classloader
I think you have three options (EDIT -- more details): load a class from a File on the filesystem, using a URLClassLoader: see this answer; create the class using reflection: you still need the class to be in classpath, or you need to load it through filesystem (option 1), see...
I don't have a solution for searching missing loaded library. However this workaround worked for me: I reconfigured log4j in static block of main servlet class. static Logger logger = LoggerFactory.getLogger(FeedAggregatorServlet.class); static { Properties p = new Properties(); ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); try { p.load(classLoader.getResourceAsStream("/FeedAggregatorlog4j.properties")); } catch (IOException e) {...
When accessing OOMErrorB.c, OOMErrorB is not loaded because it is already in the process of being loaded (when the JVM initially loaded it in order to invoke the main method). Once a class is loaded in the JVM, it will not be loaded again. Therefore, no cyclic dependency occurs: OOMErrorB's...
java,reflection,classloader,google-reflections
After throwing the jars through a decompiler, it turns out the android.jar within the SDK is merely an empty shell so that IDEs such as Eclipse and IntelliJ can use a smaller jar to help with auto-complete. The code is fine but I'll need to inspect complete jars. I've found...
java,java-8,classloader,nashorn
From your question it is not clear why'd you look for such classloader isolation. So, I'm summarizing nashorn's classloader here - may be, you'll get what you're looking for. Nashorn and classloaders: Nashorn classes (jdk.nashorn.*) are loaded by Java extension class loader Generated script classes, adapters (subclasses, interface implementations from...
java,dynamic,static,classloader
// String.class here is the parameter type, that might not be the case with you Method method = clazz.getMethod("methodName", String.class); Object o = method.invoke(null, "whatever"); In case the method is private use getDeclaredMethod() instead of getMethod(). And call setAccessible(true) on the method object. for static methods we can use null...
Indeed this is occasionally necessary. This is how I do this in production. It uses reflection to circumvent the encapsulation of addURL in the system class loader. /* * Adds the supplied Java Archive library to java.class.path. This is benign * if the library is already loaded. */ public static...
java,classpath,classloader,urlclassloader,dynamic-class-loaders
Given all constraints this does not appear entirely possible in a rock solid fashion as I wanted it: a) Third party libraries may always "misbehave" and get hold of lassloaders they are not supposed to use one way or another. I looked at OneJar as suggested by fge but they...
The reason for having the three basic class loaders (Bootstrap, extension, system) is mostly security. Prior to version 1.2 of the JVM, there was just one default class loader, which is what is currently called the "Bootstrap" class loader. The way classes are loaded by class loaders is that each...
java,eclipse,classloader,launcher
You can explicitly specify the -vm argument in eclipse.ini file as in below and restart eclipse -startup plugins/org.eclipse.equinox.launcher_1.3.0.v20140415-2008.jar --launcher.library plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.200.v20150204-1316 -product org.eclipse.epp.package.jee.product --launcher.defaultAction openFile --launcher.XXMaxPermSize 256M -showsplash org.eclipse.platform --launcher.XXMaxPermSize 256m --launcher.defaultAction openFile --launcher.appendVmargs -vm C:\Program...
java,jar,classloader,dynamically-generated,dynamic-class-loaders
Everything that was suggested didn't seem to work because the files i needed to load were outside my classpath. This answer works though...
java,casting,classloader,methodhandle,invokevirtual
You can’t use invokeExact if the compile-time type of an argument doesn’t match the MethodHandle’s parameter type. It doesn’t help to play around with the Generic constructs like invoking cast on a Class<T>, the dynamic type is still unknown to the compiler. Or, in other words, due to type erasure,...
java,gradle,resources,classpath,classloader
Be aware that the word resource in your Gradle structure and the word resource in ClassLoader are unrelated. As your ClassLoader might have more than one root, you need to loop over the roots. Use getResources() instead of getResource(). See http://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.html#getResources-java.lang.String- Like this: ClassLoader classLoader = Config.class.getClassLoader(); // or use:...
java,websphere,classloader,apache-httpclient-4.x
You need both settings - isolated shared library and PARENT_LAST classloader setting to use your own httpclient libraries. PARENT_LAST is required to override classes provided by the server....
java,security,classloader,sandbox,securitymanager
I fixed my problem. The problem was that I was running this code on Windows. In Windows you have to grant all files read access. So adding the following line solved my problem. context.addFilePermission(FileAccess.READ, AccessType.PERMIT, new FilePrefixPermission("")); ...
java,scala,oop,object,classloader
myClass is a type. b is a value (or term) of type java.lang.Class. new requires the former kind.
Try using getResource("resources/txtFile.txt"); (i.e. without the first /). There should not be a leading slash when using the ClassLoader's version of getResource, it will be interpreted as an absolute path always....
java,jar,jboss,casting,classloader
As per my understanding, if I set a classLoader to the current thread, the methods and interfaces referenced by the Current Thread should be from the present classLoader. No, this is a misconception. The context class loader is not used unless code specifically uses it. In particular, the context...
Classloader is not an exception from the rules, so: ClassLoader instance is created on heap, ClassLoader class is like any other class it is created on permgen (till Java 7) ...
They are not the same at all, Class.forName return the Class object associated with the class of the given name. In your example, you give to loadClass a String that represent the name of a class, instead of giving it directly a class. This method does allow you to give...
java,error-handling,runtime-error,classloader,runnable
You need to shift your thought process a bit when dealing with error and exceptions. It is always a good practice to print the error trace. Now the question is where to print. by default printStackTrace prints to your standard console. of course you can redirect that output to a...
The short answer is no. System ClassLoader delegates to the Bootstrap ClassLoader and Extension ClassLoader and then tries to load classes from classpath, but not from nested JARs. You have to implement or use an existing ClassLoader that supports that functionality....
java,xslt,classloader,inputstream
If it's a native file path just you can simply use a normal FileInputStream.
java,hibernate,classloader,glassfish-4
This was fixed by placing the classes with the JPA annotations and enum classes into the domain-dir/lib/applib directory. You have to place these classes in a JAR in the domain-dir/lib/applib directory and then specify the jar on the deploy command with asadmin using the --libraries jar1,jar2,etc. Do not place a...
java,classloader,bytecode,java-bytecode-asm
If you print out line number information using javap -l, you can find that 2.class has the following line number table for doIt(String, String, AppContext): LineNumberTable: line 56: 0 line 57: 11 line 58: 19 line 60: 23 line 61: 65 According to this, line number 61 links to byte...
This is a rather broad question with a lot of code required, so I am only going to cover some of the basics. Assuming you have the IProject for the project you can get the IJavaProject object you need using: IProject project = .... IJavaProject javaProject = JavaCore.create(project); You can...
java,python,jar,classloader,jython
Turned out that Jython2.5.1 interpreter was mixed with the zip-of-the-standard-modules of Jython2.5.3 I had the interpreter version and zip-of-standard-modules mixed-up before, but this time the interpreter had the minor version, which i didn't see comming....
java,multithreading,classloader
The class will have been loaded, but not necessarily initialized. Basically, there's a Class object available when you synchronize on it, but until something uses a member of the class, it doesn't have to be initialized. From the JVM specification section 5.5: Initialization of a class or interface consists of...
If you're open to using a third-party library, Reflections seems to be the best fit here. It's a Java runtime metadata analysis library and is like geared to do this. From their website: Using Reflections you can query your metadata such as: get all subtypes of some type get all...
java,jboss,jax-ws,javamail,classloader
There was a bug in the interaction between JavaMail and JAX-WS. The latest versions of the JDK include a fix for this bug. Upgrade to JDK 1.8, or the latest version of JDK 1.7. A workaround may be to do this after JAX-WS is initialized: MailcapCommandMap mailMap = (MailcapCommandMap) CommandMap.getDefaultCommandMap();...
java,jvm,classloader,websphere-liberty
While writing the third bullet for my question, I realized that console.log was actually a new file that didn't previously exist, and I hadn't actually checked what was in it. I just opened it up and lo and behold, it's exactly the class loading logs that I was looking for....
java,runtime,osgi,classloader,karaf
How can I determine the parent bundle of a thread in karaf? You cannot. A thread does not have a parent bundle. If you mean the Thread context classloader, it is not defined at all in OSGi. TCC is normally the classloader of a webapp in the Java EE...
java,classloader,java-bytecode-asm,bytecode-manipulation
You generated your constructor using "java.lang.invoke.MethodHandle" as the field signature rather than the correct "Ljava/lang/invoke/MethodHandle;". This can be seen in the javap output by the lines: 5: putfield #13 // Field guard:java.lang.invoke.MethodHandle … 13: putfield #15 // Field trueTarget:java.lang.invoke.MethodHandle … 21: putfield #17 // Field falseTarget:java.lang.invoke.MethodHandle whereas the Hello method...
java,classloader,resourcebundle
A Java application might have multiple class loaders. For example, a J2EE application running on Tomcat or Glassfish has multiple tiers of classloaders - some belonging to the J2EE server itself, some being specifically made for your webapp (otherwise your webapp would be able to access classes belonging to other...
java,classloader,bytecode-manipulation,javaagents
Using reflection, you can implement this quite easily: class EasyFieldAlterationAgent { public static void premain(String args) throws Exception { Field field = X.class.getDeclaredField("timeout"); field.setAccessible(true); field.setValue(null, 42L); // set your value here. } } Note that this will change the field not before but right after class loading time. If this...
java,junit,classloader,test-runner
In the end I wrote my own, loosely based on another Stack Overflow answer (which didn't work for me). It's now on GitHub, and Maven Central. https://github.com/BinaryTweed/quarantining-test-runner <dependency> <groupId>com.binarytweed</groupId> <artifactId>quarantining-test-runner</artifactId> <version>0.0.1</version> </dependency> To use it annotate your test classes accordingly: @RunWith(QuarantiningRunner.class) @Quarantine({"com.binarytweed"}) public class MyIsolatedTest { ... The linked...
namespaces,classloader,symfony-1.4,autoload
Use composer and its autoloading. Execute: composer require donquixote/cellbrush Now the library is installed in vendor directory and autoloader is generated, you just need to include it. Add this line to the top of config/ProjectConfiguration.class.php: require_once dirname(__FILE__).'/../vendor/autoload.php'; ...
You try to load the main class with your JarInJarClassLoaderwhich is an UrlClassloader but your classpath is not inside the array of URLs which you pass to your loader. That is the reason that all jars could be loaded, but not your main class,if the main class is not inside...
I eventually tracked down the cause of this. As indicated by @immibis's comments, the exception was during class initialization, rather during construction of an instance. One of the methods of class NlxBrowserJsEngine calls a static method of another class - and this class extends from netscape.javascript.JSObject. In the oracle implementation...
java,image,classloader,getresource
Null pointer Error you are facing should be at this line img = Toolkit.getDefaultToolkit() .createImage(getClass() .getClassLoader() .getResource(name)); This is because it could not find the file Flower.jpg. When u give getClassLoader().getResource(name), it looks for the img folder in root directory where class files are located. You can see the below...
Well you need to differentiate between classes and objects. Test t = new Test() Will produce an object. If you want the classloader of it, you need to access the class of the object because a classloader loads classes, not objects. Let's say ClassLoader cl = t.getClass().getClassLoader(); If you just...
To expand on my comment, I think the cleanest you'll get is something like this: public static <T extends Enum<T>> T loadEnum(ClassLoader loader, String classBinaryName, String instanceName) throws ClassNotFoundException { @SuppressWarnings("unchecked") Class<T> eClass = (Class<T>)loader.loadClass(classBinaryName); return Enum.valueOf(eClass, instanceName); } There is really no way to avoid the unchecked cast from...
The problem was that the Windows File System is case insensitive (but not because of loading classes like suggested in the comments, but for me writing the file dumps). I wrote out the classes with their names, but because P.x and P.X exist, I did overwrite P.x with P.X. So...
java,classloader,urlclassloader
I'd just parse the beginning of the class file, looking for "package" keyword and first occurrence of "class" keyword. Then, when you combine those two (packageName + "." + className), it should result in a proper class name.
If the second call to ResourceBundle.getBundle("config/propfile.properties") is from a class in the ejb module, it would no have access to WAR/WEB-INF/classes/config/propfile.properties. This is because each module has a different class loader. Download the ee spec at the following link (or the corresponding spec for your javaee standard). http://download.oracle.com/otndocs/jcp/javaee-6.0-fr-eval-oth-JSpec/ In this...
java,java-ee,glassfish,classloader,manifest
You need to locate where the ear file is and then get the manifest by: new java.util.jar.JarFile(file).getManifest(); ...
You need to create your own ClassLoader, give a look at How to use URLClassLoader to load a *.class file? Here is an example (from http://www.programcreek.com/java-api-examples/index.php?api=java.net.URLClassLoader, there is others with hosted urls): private void invokeClass(String path, String name, String[] args) throws ClassNotFoundException, NoSuchMethodException, InvocationTargetException, MalformedURLException, InterruptedException, IllegalAccessException { File f...
Short answer: it's probably fine. Longer answer: it's not guaranteed to be fine, because nothing in the JLS guarantees that classes in packages are organized as files in directories. The pertinent section of the JLS is 7.2. Host Support for Packages: In simple implementations of the Java SE platform, packages...
java,resources,bytearray,classloader
In the past, I've attached a custom URLStreamHandler to the URL during construction. For example: public class MyClassLoader extends ClassLoader { final byte[] myByteArray = new byte[] {0x1, 0x2, 0x3}; protected URL findResource(String name) { URL res = super.findResource(name); if (res != null) { res = new URL("my-bytes:" + name,...
This is the code that works: content = new Scanner(new File("plugins/" + listOfFiles[i].getName().replaceAll(".jar", "") + "/" + "plugin.cfg")).useDelimiter("\\Z").next(); URL[] urls = null; try { File dir = new File("plugins/" + listOfFiles[i].getName()); URL url = dir.toURL(); urls = new URL[]{url}; } catch (MalformedURLException e) { } try { ClassLoader cl =...
scala,unit-testing,junit,classloader
You're not going to be able to get around Java's class casting, which requires strict typing, within the same ClassLoader. Same with traits/interfaces. However, Scala comes to the rescue with structural typing (a.k.a. Duck Typing, as in "it quacks like a duck.") Instead of casting it to type A, cast...
java,reflection,classpath,classloader
There is no need for reflection. Try running your application without the javacv jar files in the classpath. If you never touch the webcam functions, and if you haven't coded your application in a monolithic manner, you should not have any problems, because Java doesn't try to load a class...
java,security,permissions,classloader,rmi
Obviously the file isn't being found. As you've only specified it as "client.policy", it needs to be in the current working directory when the program is launched. If you run it with -Djava.security.debug=access,failure you will get a very complete trace of security manager failures, including the security domain in effect...
java,android,android-studio,classloader,classnotfoundexception
Тry to change the class loader ClassLoader.getSystemClassLoader() with this one this.getClass().getClassLoader()
java,reflection,classloader,protostuff
One thing you could do, is to have a separate ClassLoader objects for different versions. As the ClassLoader is part of an the identity of a class, in addition to it's package and name, you are then able to have multiple versions of the class in memory. The only problem...
java,classloader,abstract-class,extends
Add an abstract method to PluginManager to make a class loader, and call it as needed. Subclasses should override that method, returning the appropriate subclass: public abstract class PluginManager { public PluginManager() { pluginLoader = MakeClassLoader(); } ... protected abstract PluginClassLoader MakeClassLoader(); } public class ServiceManager extends PluginManager { ......
Does jvm load all the classes mentioned by the classpath Or it is just a super set of all classes which jvm will look up to load when required? JVM loads classes form the classpath on the need basis i.e. when a reference is found for the class, it...
java,encryption,bytearray,classloader
I think your current class loader is trying to load Java SDK classes as well. That's why you get that error. Try checking the package names in findClass() and use the System Class Loader to load the ones that are not in your packages.
Since you are dealing with Secure Connections, you are stepping into the area of Certificates. Java thinks that your Server is not trusted. You could understand that from the stack traces. You have two choices here. You can let your program to ignore the Certificate Validation. You will need to...
java,hibernate,groovy,classloader
This worked for me: Thread.currentThread().setContextClassLoader(DynamicallyLoadedClass.getClassLoader()); example: URL file = ConsultaBase.class.getProtectionDomain().getCodeSource().getLocation() .toURI().resolve("hibernate.cfg.xml").toURL(); Configuration configuration = new Configuration() .addAnnotatedClass(Registro.class).configure(file); ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder() .applySettings(configuration.getProperties()) .build();...
The classpath loading mechanism in the JVM is highly extensible, so it's often hard to guarantee a single method that would work in all cases. e.g. What works in your IDE may not work when running in a container because your IDE and your container probably have highly specialized class...
java,serialization,classloader
I think what you want to do is transfer the actual byte code of the user-defined classes. If you do not have the byte code of the classes and just the source code, you need to compile it first. I suggest using JavaCompiler. Since it is a little tedious to...
you should register new namespace for it I have follow solution to connect zf library 1) zf library is located at vendor/gamma/zf/library 2) venvodor/zf/composer.json { "name": "gamma/zf", "type": "symfony-bundle", "autoload": { "psr-0": { "Zend_": "" } }, "target-dir": "", "require": { "php": ">=5.3.3", "symfony/symfony": "~2.1" } } 3) app/autoload.php <?php...
If your Cat class is known to implement, say, some Animal interface then you can do Animal a = (Animal)o and start invoking Animal methods on a without any use of reflection.
Unfortunately, the bytecode is in fact too different. The version stamped on the class is essential and would not work correctly if this is not correct. It could not be fixed this way, sadly, so you will at the mercy of others in this regard.
java,android,javafx,classloader
In fact the usage of Paths was design-technically wrong to begin with. The FXML source might better be packed in a jar as a read-only resource. MyProject -- src\main\java\somepackage\Main.java -- src\main\resources\assets\sample_layout.fxml URL myFxmlLayout= Main.class.getResource("/assets/sample_layout.fxml"); In your original design, you could use new File(...) instead, but then have to take care...
java,maven,jar,maven-2,classloader
In normal java application this is not possible, because in the application itext 2.1 and 2.0 will share the same classloader. But normally, java-apis take care about backward-compatibility, so it should be possible to include only 2.1. If not, you need multiple classloaders and then it will become complicated. Existing...
javascript,requirejs,classloader,circular-dependency
This is (IMO) a vary valid question, puzzled me since yesterday. What I would consider if I were you, in preference order: Embrace ducktyping. A useful Child class may have methods like play() and cry(), so the "if it walks like a duck and quacks like a duck..." becomes "if...
Figured I could add this as an answer so people can see it more readily... The java.lang.ClassLoader is part of the Java core libraries (as an abstract class) and Java-provided implementations of it are loaded by the JVM by the bootstrap class loader. The bootstrap class loader is written in...
struts2,log4j,classloader,slf4j,nosuchmethoderror
Your application server is failing to start due to problems with SLF4J (Simple Logging Facade for Java), not Log4j. You are probably: including an old version of SLF4J, or mixing multiple versions of SLF4J (one of which old), or there is an old SLF4J version in the application server's shared...
The sentence as it appears in the documentation of ClassLoader is: Every Class object contains a reference to the ClassLoader that defined it. Note the two links? What they tell you is that the documentation refers to the Class object, not to the plain object of class ClassA. Every class...