我正在为Java中的ERP系统进行定制.在我的自定义中,我想使用Apache POI 3.10.1.因此我整合了罐子poi-3.10.1-20140818.jar和poi-ooxml-3.10.1-20140818.jar.
但是,这些jar包含已经包含在ERP系统核心代码中的几个类,但有差异.
如果核心ERP类覆盖POI类,则自定义会引发运行时异常.如果POI类覆盖核心类,则核心功能可能会发生相同的情况.
处理这样的问题的最佳做法是什么?
我的定制是一个相对孤立的功能.
有一个奇怪的情况.我在我的企业应用程序中使用Glassfish服务器.在那个应用程序中,我使用的是JSF,Richfaces,Quartz,Jasper Reports和Commons Email.当我构建并部署应用程序到我的开发.计算机,开发和测试服务器,一切正常.但是,当我使用相同的glassfish将应用程序部署到生产服务器时,我无法运行Quartz调度程序.它让我觉得公共收藏有一些问题.我知道某处有冲突,但我无法找到.你能给我一些指点吗?顺便说一下,我正在使用NetBeans 6.5.
这是日志:
[#|2009-02-13T02:00:03.055+0000|WARNING|sun-appserver9.1|javax.enterprise.resource.webcontainer.jsf.lifecycle|_ThreadID=22;_ThreadName=httpSSLWorkerThread-80-4;_RequestID=97d21f45-2489-486c-b8d9-68625776c546;|#{SchedulerController.play}: java.lang.NoSuchMethodError: org.apache.commons.collections.SetUtils.orderedSet(Ljava/util/Set;)Ljava/util/Set;
javax.faces.FacesException: #{SchedulerController.play}: java.lang.NoSuchMethodError: org.apache.commons.collections.SetUtils.orderedSet(Ljava/util/Set;)Ljava/util/Set;
at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:107)
at javax.faces.component.UICommand.broadcast(UICommand.java:383)
at org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:321)
at org.ajax4jsf.component.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:296)
at org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:253)
at org.ajax4jsf.component.AjaxViewRoot.processApplication(AjaxViewRoot.java:466)
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:97)
at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)
at org.apache.catalina.core.ApplicationFilterChain.servletService(ApplicationFilterChain.java:411)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:317)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:198)
at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:390)
at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:517)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:198)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:288)
at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:271)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:202)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577)
at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:94)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:206)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:571)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1080)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:150)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:571) …
Run Code Online (Sandbox Code Playgroud) 我正在使用两个文件".h",其中有3个具有相同名称的全局变量.
我们假设有这些文件:
当我编译Ch时,我有一个错误导致相同变量名称的冲突.
我不想修改他们的名字,因为他们在公共图书馆里面(我想按原样使用它们!).这是我的问题.有人能帮我吗?谢谢.
我正在OpenWRT机器(ARM路由器)上构建PHP7.我想要包含MySQL,所以我也必须构建它.OpenWRT是99.5%的普通linux,但有一些奇怪的构建/共享库事物可能不经常运行,所以我遇到了一些困难.
MySQL构建正常(经过一些调整后),我有一个libmysqlclient.so
工作.但是,configure
PHP7 的过程在尝试链接MySQL测试程序时失败,因为libmysqlclient.so
必须与C++标准库链接,而不是C标准库.(MySQL显然至少部分是C++,它使用std::...stuff...
.) Configure
尝试编译测试程序gcc
,其中不包括链接中的C++库,因此测试失败.
我通过制作一个简单的C/C++切换脚本来解决这个问题:如果命令行包含-lmysqlclient
那么我就是exec g++ $*
其他人exec gcc $*
.然后我告诉configure
我使用我的脚本作为C编译器.
我发现必须有更好的方法来处理这个问题.似乎libmysqlclient.so
应该有一些方法告诉链接器它也需要它libstdc++.so
,所以即使gcc
用于链接,所有必要的库也会被拉入.
有没有办法标记依赖关系libmysqlclient.so
?或者configure
更聪明地运行测试程序?