战争被部署到Tomcat 8.5.27。在此部署期间,实体类会动态添加到类路径上的import tensorlow
# Below is the error message
ImportError Traceback (most recent call last)
~/envs/egpu/lib/python3.6/site-packages/tensorflow/python/pywrap_tensorflow.py in <module>
40 sys.setdlopenflags(_default_dlopen_flags | ctypes.RTLD_GLOBAL)
---> 41 from tensorflow.python.pywrap_tensorflow_internal import *
42 from tensorflow.python.pywrap_tensorflow_internal import __version__
~/envs/egpu/lib/python3.6/site-packages/tensorflow/python/pywrap_tensorflow_internal.py in <module>
27 return _mod
---> 28 _pywrap_tensorflow_internal = swig_import_helper()
29 del swig_import_helper
~/envs/egpu/lib/python3.6/site-packages/tensorflow/python/pywrap_tensorflow_internal.py in swig_import_helper()
23 try:
---> 24 _mod = imp.load_module('_pywrap_tensorflow_internal', fp, pathname, description)
25 finally:
/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/imp.py in load_module(name, file, filename, details)
241 else:
--> 242 return load_dynamic(name, filename, file)
243 elif type_ == PKG_DIRECTORY:
/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/imp.py in load_dynamic(name, path, file)
341 name=name, loader=loader, origin=path)
--> 342 return _load(spec)
343
ImportError: dlopen(/Users/besanhalwa/envs/egpu/lib/python3.6/site-packages/tensorflow/python/_pywrap_tensorflow_internal.so, 10): Library not loaded: @rpath/libcublas.8.0.dylib
Referenced from: /Users/besanhalwa/envs/egpu/lib/python3.6/site-packages/tensorflow/python/_pywrap_tensorflow_internal.so
Reason: image not found
During handling of the above exception, another exception occurred:
ImportError Traceback (most recent call last)
<ipython-input-1-d6579f534729> in <module>
----> 1 import tensorflow
~/envs/egpu/lib/python3.6/site-packages/tensorflow/__init__.py in <module>
22
23 # pylint: disable=wildcard-import
---> 24 from tensorflow.python import *
25 # pylint: enable=wildcard-import
26
~/envs/egpu/lib/python3.6/site-packages/tensorflow/python/__init__.py in <module>
49 import numpy as np
50
---> 51 from tensorflow.python import pywrap_tensorflow
52
53 # Protocol buffers
~/envs/egpu/lib/python3.6/site-packages/tensorflow/python/pywrap_tensorflow.py in <module>
50 for some common reasons and solutions. Include the entire stack trace
51 above this error message when asking for help.""" % traceback.format_exc()
---> 52 raise ImportError(msg)
53
54 # pylint: enable=wildcard-import,g-import-not-at-top,unused-import,line-too-long
ImportError: Traceback (most recent call last):
File "/Users/besanhalwa/envs/egpu/lib/python3.6/site-packages/tensorflow/python/pywrap_tensorflow.py", line 41, in <module>
from tensorflow.python.pywrap_tensorflow_internal import *
File "/Users/besanhalwa/envs/egpu/lib/python3.6/site-packages/tensorflow/python/pywrap_tensorflow_internal.py", line 28, in <module>
_pywrap_tensorflow_internal = swig_import_helper()
File "/Users/besanhalwa/envs/egpu/lib/python3.6/site-packages/tensorflow/python/pywrap_tensorflow_internal.py", line 24, in swig_import_helper
_mod = imp.load_module('_pywrap_tensorflow_internal', fp, pathname, description)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/imp.py", line 242, in load_module
return load_dynamic(name, filename, file)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/imp.py", line 342, in load_dynamic
return _load(spec)
ImportError: dlopen(/Users/besanhalwa/envs/egpu/lib/python3.6/site-packages/tensorflow/python/_pywrap_tensorflow_internal.so, 10): Library not loaded: @rpath/libcublas.8.0.dylib
Referenced from: /Users/besanhalwa/envs/egpu/lib/python3.6/site-packages/tensorflow/python/_pywrap_tensorflow_internal.so
Reason: image not found
Failed to load the native TensorFlow runtime.
See https://www.tensorflow.org/install/install_sources#common_installation_problems
for some common reasons and solutions. Include the entire stack trace
above this error message when asking for help.
文件中。
然后,要求Hibernate 5.1.2加载包含那些实体类的持久性单元。它们被添加到persistence.xml
实例中。这是部署日志的摘录,其中显示了此类加载器的转储:
java.net.FactoryURLClassLoader
请注意,上述所有操作似乎都是由[INFO] [talledLocalContainer] 15-Feb-2019 15:03:46.722 INFOS [localhost-startStop-1] org.apache.catalina.core.ApplicationContext.log ** SEARCHING: generated.com.company.Baz
[INFO] [talledLocalContainer] 15-Feb-2019 15:03:46.727 INFOS [localhost-startStop-1] org.apache.catalina.core.ApplicationContext.log ClassLoader: java.net.FactoryURLClassLoader@701f7082
[INFO] [talledLocalContainer] class generated.com.company.Foo
[INFO] [talledLocalContainer] class generated.com.company.Bar
(...)
[INFO] [talledLocalContainer] class generated.com.company.GooClassLoader: ParallelWebappClassLoader
[INFO] [talledLocalContainer] context: webappContext
[INFO] [talledLocalContainer] delegate: false
[INFO] [talledLocalContainer] ----------> Parent Classloader:
[INFO] [talledLocalContainer] java.net.URLClassLoader@45d6cf48
[INFO] [talledLocalContainer]
[INFO] [talledLocalContainer] class com.sun.jersey.server.impl.container.servlet.JerseyServletContainerInitializer
[INFO] [talledLocalContainer] class javax.ws.rs.core.Application
(...)
线程执行的。
稍后,当请求到达Web应用程序时,处理该请求的线程(localhost-startStop-1
请参见下面的日志)无法找到http-nio-8080-exec-6
下的类。这是此线程类加载器的转储的摘录:
generated.com.company
以下是用于生成转储的代码:
[INFO] [talledLocalContainer] 15-Feb-2019 15:04:18.705 INFOS [http-nio-8080-exec-6] org.apache.catalina.core.ApplicationContext.log ** SEARCHING: generated.com.company.Foo
[INFO] [talledLocalContainer] 15-Feb-2019 15:04:18.724 INFOS [http-nio-8080-exec-6] org.apache.catalina.core.ApplicationContext.log ClassLoader: ParallelWebappClassLoader
[INFO] [talledLocalContainer] context: webappContext
[INFO] [talledLocalContainer] delegate: false
[INFO] [talledLocalContainer] ----------> Parent Classloader:
[INFO] [talledLocalContainer] java.net.URLClassLoader@45d6cf48
[INFO] [talledLocalContainer]
[INFO] [talledLocalContainer] class com.sun.jersey.server.impl.container.servlet.JerseyServletContainerInitializer
[INFO] [talledLocalContainer] class javax.ws.rs.core.Application
(...)
为什么private static void dumpLoadedClasses() {
try {
ClassLoader myCL = Thread.currentThread().getContextClassLoader();
StringBuilder sb = new StringBuilder();
while (myCL != null) {
sb.append("ClassLoader: " + myCL);
for (Iterator<Class<?>> iter = list(myCL); iter.hasNext();) {
sb.append("\n\t" + iter.next());
}
myCL = myCL.getParent();
}
log.info(sb.toString());
} catch (Exception e) {
log.warn("", e);
}
}
没有http-nio-8080-exec-6
作为上下文类加载器?
答案 0 :(得分:0)
考虑使用ClassLoader.getParent(),也许他们有共同的祖先