So here are the stack traces in all 3 scenarios:
1. The .jar is in the WEB-INF/lib directory of the .war - everything works
2. The .jar is in the deploy directory, parallel to the .war (I though for a
while that this was beacuse of deploy order, but I tried changing the names so
that the .war goes first and then the .jar, and the other way ruond, but the
effect is the same):
| 08:32:58,359 ERROR [[fileAccessServlet]] Servlet.service() for servlet
fileAccessServlet threw exception
| java.lang.NoClassDefFoundError:
org/jboss/forge/fileaccess/DownloadsFileAccessMonitor :
org/jboss/shotoku/fileaccess/FileAccessMonitor
| at
java.lang.ClassLoader.defineClass(Ljava.lang.String;[BIILjava.security.ProtectionDomain;)Ljava.lang.Class;(Unknown
Source)
| at
java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
| at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
| at java.net.URLClassLoader.access$100(URLClassLoader.java:56)
| at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
| at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
| at
org.jboss.mx.loading.RepositoryClassLoader.findClassLocally(RepositoryClassLoader.java:672)
| at
org.jboss.mx.loading.RepositoryClassLoader.findClass(RepositoryClassLoader.java:652)
| at
java.lang.ClassLoader.loadClass(Ljava.lang.String;Z)Ljava.lang.Class;(Unknown
Source)
| at
org.jboss.mx.loading.RepositoryClassLoader.loadClassLocally(RepositoryClassLoader.java:190)
| at
org.jboss.mx.loading.ClassLoadingTask$ThreadTask.run(ClassLoadingTask.java:131)
| at org.jboss.mx.loading.LoadMgr3.nextTask(LoadMgr3.java:399)
| at
org.jboss.mx.loading.RepositoryClassLoader.loadClassImpl(RepositoryClassLoader.java:517)
| at
org.jboss.mx.loading.RepositoryClassLoader.loadClass(RepositoryClassLoader.java:405)
| at
java.lang.ClassLoader.loadClass(Ljava.lang.String;Z)Ljava.lang.Class;(Unknown
Source)
| at java.net.FactoryURLClassLoader.loadClass(URLClassLoader.java:580)
| at
java.lang.ClassLoader.loadClass(Ljava.lang.String;)Ljava.lang.Class;(Unknown
Source)
| at
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1339)
| at
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1198)
| at
java.lang.ClassLoader.loadClassFromNative(Ljava.lang.String;)Ljava.lang.Class;(Unknown
Source)
| at
java.lang.Class.forName(Ljava.lang.String;ZLjava.lang.ClassLoader;)Ljava.lang.Class;(Unknown
Source)
| at
java.lang.Class.forName(Ljava.lang.String;I)Ljava.lang.Class;(Unknown Source)
| at
org.jboss.shotoku.fileaccess.FileAccessConfiguration.init(FileAccessConfiguration.java:35)
| at
org.jboss.shotoku.fileaccess.FileAccessConfigurationWatcher.getConfiguration(FileAccessConfigurationWatcher.java:37)
| at
org.jboss.shotoku.fileaccess.FileAccessConfigurationWatcher.init(FileAccessConfigurationWatcher.java:42)
| at
org.jboss.shotoku.fileaccess.FileAccessConfigurationWatcher.init(FileAccessConfigurationWatcher.java:18)
|
3. The .jar is not present at all, so the classes are simply not there:
| 08:53:16,108 ERROR [FileAccessServlet] Error loading a file access monitor.
| java.lang.ClassNotFoundException:
org.jboss.forge.fileaccess.TempFilesFileAccessMonitor
| at
java.lang.Class.forName(Ljava.lang.String;ZLjava.lang.ClassLoader;)Ljava.lang.Class;(Unknown
Source)
| at
java.lang.Class.forName(Ljava.lang.String;I)Ljava.lang.Class;(Unknown Source)
| at
org.jboss.shotoku.fileaccess.FileAccessConfiguration.init(FileAccessConfiguration.java:35)
| at
org.jboss.shotoku.fileaccess.FileAccessConfigurationWatcher.getConfiguration(FileAccessConfigurationWatcher.java:37)
| at
org.jboss.shotoku.fileaccess.FileAccessConfigurationWatcher.init(FileAccessConfigurationWatcher.java:42)
| at
org.jboss.shotoku.fileaccess.FileAccessConfigurationWatcher.init(FileAccessConfigurationWatcher.java:18)
| at
org.jboss.shotoku.cache.ShotokuCacheItem.get(ShotokuCacheItem.java:107)
| at
org.jboss.shotoku.fileaccess.FileAccessServlet.doGet(FileAccessServlet.java:57)
| at javax.servlet.http.HttpServlet.service(HttpServlet.java:697)
| at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
| at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
| at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
| at
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
| at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
| at