环境是Linux上的WAS 6.1,部署了一个使用xercesImpl.jar类的webapp.
由于公司政策限制,必须使用以下设置部署应用:
Class Loader Order
Classes loaded with parent class loader first
-> Classes loaded with application class loader first
WAR class loader policy
Class loader for each WAR file in application
-> Single class loader for application
Run Code Online (Sandbox Code Playgroud)
WAR文件包含xercesImpl.jar的副本,与编译应用程序时类路径中的相同.
启动webapp时,当Spring尝试解析其配置时,它会抛出:
java.lang.VerifyError: class loading constraint violated
(class: org/apache/xerces/jaxp/DocumentBuilderImpl
method: parse(Lorg/xml/sax/InputSource;)Lorg/w3c/dom/Document;)
Run Code Online (Sandbox Code Playgroud)
因此分析
看来WAS提供了org.apache.xerces.jaxp.DocumentBuilderImpl的实现,因为我们可以从WAR文件中删除xercesImpl.jar并仍然得到相同的错误(不是ClassNotFoundException).因此,WAS似乎使用自己的副本来解析引用,该副本与我们编译的类文件中的引用不兼容.但是,我能找到的'xercesImpl.jar'的唯一其他实例(除了使用我们的应用程序部署的副本)位于目录中
deploytool,这似乎在应用服务器之外.
我用WAS(所有1300个)扫描了所有的罐子
for i in `find . -name \*.jar`; do jar tvf $i|grep -qi xerces && echo $i ; done
Run Code Online (Sandbox Code Playgroud)
并发现它./java/jre/lib/xml.jar包含所有类org.apache.xerces.*,因此这可能是类加载器解析引用的地方.
这是肮脏的部分:
如果我们改为"父类加载器第一",我们看不到异常.这与预期的行为背道而驰.我们希望使用"application …
我需要在bash脚本中将一些配置数据读入环境变量中.
"明显的"(但不正确)模式是:
egrep "pattern" config-file.cfg | read VAR1 VAR2 VAR3 etc...
Run Code Online (Sandbox Code Playgroud)
这会失败,因为read它在子shell中运行,因此无法在调用shell中设置变量.所以我想出了这个作为替代方案
coproc egrep "pattern" config-file.cfg
read -u ${COPROC[0]} VAR1 VAR2 VAR3 etc...
Run Code Online (Sandbox Code Playgroud)
哪个工作正常.
为了测试如果协同进程返回多行会发生什么,我尝试了这个:
coproc cat config-file.cfg
read -u ${COPROC[0]} VAR1 VAR2 VAR3 etc...
Run Code Online (Sandbox Code Playgroud)
其中config-file.cfg包含三行.
$ cat config-file.cfg
LINE1 A1 B1 C1
LINE2 A2 B2 C2
LINE3 A3 B3 C3
Run Code Online (Sandbox Code Playgroud)
我希望这会处理文件中的第一行,然后是某种"破管"错误消息.虽然它确实处理了第一行,但没有任何错误消息,也没有任何协同进程继续运行.
所以我在脚本中尝试了以下内容:
$ cat test.sh
coproc cat config-file.cfg
read -u ${COPROC[0]} VAR1 VAR2 VAR3 VAR4
echo $VAR1 $VAR2 $VAR3 $VAR4
wait
echo $? …Run Code Online (Sandbox Code Playgroud) 我需要从Fortran代码中删除一个文件.我在ubuntu 12.04, x86_64.我不明白为什么下面描述的程序不起作用.请帮助我澄清一下情况(实际上,在某些系统上,它有效,但不适用于我的).
还有另一种方法:我可以直接调用unix命令rm -f file,但我想知道我的方法有什么问题.谢谢.
步骤1.制作简单的脚本del.sh并将其放入〜/ bin
$ cat del.sh
[ $# -ge 1 ] && rm -f $1
$ chmod u+x del.sh; mv del.sh ~/bin
Run Code Online (Sandbox Code Playgroud)
第2步.Fortran代码,del.for:
character*100 cmd
character*30 file
call getarg(1,file)
write(cmd,100) file
100 format('source del.sh ',a30)
call system(cmd)
end
Run Code Online (Sandbox Code Playgroud)
第3步.编译并运行:
$ ifort -o del del.for
$ ./del file
Run Code Online (Sandbox Code Playgroud)
结果:
sh: 1: source: not found
Run Code Online (Sandbox Code Playgroud)
怎么了?简单的'source del.sh文件'有效,但不是Fortran代码......这令人困惑.
从Fortran代码:
100 format('del.sh ',a30)
100 format('bash del.sh ',a30)
Run Code Online (Sandbox Code Playgroud)
工作完美,但是
100 format('sh del.sh ',a30)
Run Code Online (Sandbox Code Playgroud)
不起作用.我 …
我在spring-hibernate-transaction问题上花了几天时间.我使用jaxws + spring + hibernate创建一个简单的web服务,它工作正常但是当我调用使用事务bean spring的web方法时抛出以下错误:
21 sept. 2011 14:29:29 com.sun.xml.ws.server.sei.EndpointMethodHandler invoke
GRAVE: org.hibernate.HibernateException: createCriteria is not valid without active transaction
Run Code Online (Sandbox Code Playgroud)
我似乎交易已经开始......但是发生了一些错误.
[jmedia] 21 sept. 2011 14:29:29 [http-8080-1] DEBUG org.springframework.orm.hibernate3.HibernateTransactionManager - Creating new transaction with name [com.cellfish.mediadb.ws.encoder.MediaDBFeeds.testTransaction]: PROPAGATION_REQUIRED,ISOLATION_DEFAULT,readOnly; ''
[jmedia] 21 sept. 2011 14:29:29 [http-8080-1] DEBUG org.springframework.orm.hibernate3.HibernateTransactionManager - Opened new Session [org.hibernate.impl.SessionImpl@26b20a31] for Hibernate transaction
[jmedia] 21 sept. 2011 14:29:29 [http-8080-1] DEBUG org.springframework.orm.hibernate3.HibernateTransactionManager - Preparing JDBC Connection of Hibernate Session [org.hibernate.impl.SessionImpl@26b20a31]
[jmedia] 21 sept. 2011 14:29:29 [http-8080-1] DEBUG org.springframework.orm.hibernate3.HibernateTransactionManager - …Run Code Online (Sandbox Code Playgroud) 任何人都可以告诉我如何在STRUTS2 OGNL中使用"%"和"#"符号?我谷歌周围,但找不到任何有价值的信息.或者给我一个文档的链接.
谢谢
我找不到合适的sed表达式来删除一个单词后跟一行返回(\n)
测试文件是:
line1\n
line2\n
line3mark\n
line4\n
line5\n
Run Code Online (Sandbox Code Playgroud)
我希望删除所有出现的标记\n离开,在这种情况下:
line1\n
line2\n
line3line4\n
line5\n
Run Code Online (Sandbox Code Playgroud)
已搜索并可以使用:
sed 's/\n//g' test.file to remove ALL \n's
Run Code Online (Sandbox Code Playgroud)
但
sed 's/mark\n//g' test.file does not work
Run Code Online (Sandbox Code Playgroud)
奇怪的是,s/mark \n // g在交互模式下似乎在vi中正常工作.
任何帮助非常感谢!我想了解如何使用SED如何做到这一点,因为我相信它是可能的!但是,如果它可以通过另一种方式完成,那么只要它在命令行上,我也很高兴,因为它必须运行在许多文件上.
非常感谢.
当我尝试执行"mvn install"时,我有这个函数抛出奇怪的错误
public <T> T get(final AN_ENUM key)
{
return some_map.get(key);
}
Run Code Online (Sandbox Code Playgroud)
这是我收到错误的行
final int value = get(AN_ENUM.A_FIELD);
Run Code Online (Sandbox Code Playgroud)
这是maven中的错误:
XXX.java:[25,41] type parameters of <T>T cannot be determined;
no unique maximal instance exists for type variable T with
upper bounds int,java.lang.Object
Run Code Online (Sandbox Code Playgroud)
我已经知道如何"修复它".我只需要在上一个代码示例中更改intto Integer,然后bug就会消失.它告诉我maven,由于某种原因,当我使用类型参数时,无法将Integer强制转换为int.
我的问题是......为什么?
在eclipse中,使用相同的JDK,我已经能够运行我的应用程序,没有任何麻烦或警告.
铭记Java的双打是 双精度浮点数字.并且没有失去精度的最大整数是9007199254740991或2 53 -1
是否有任何干净的方法来获得这个价值? 例如,像JavaScript的MAX_SAFE_INTEGER中的常量一样
我已经为我的REST资源实现了乐观锁定,这些资源通过将GET中的版本号传回PUT调用,与数据库表进行一对一映射.如果在我执行GET和PUT之间数据库中的版本号发生了更改,则会发生乐观锁定异常.很简单的设计.
现在,如何对映射到多个数据库表的复合REST资源执行相同的操作?我不想传回多个版本字段(每个数据表对应一个复合资源).复合资源的简单示例是/ FooBar,其中/ Foo和/ Bar是非复合资源.
我基本上是在寻找Fowler的粗粒度锁定模式的REST实现示例:http://martinfowler.com/eaaCatalog/coarseGrainedLock.html
我正在使用JAVA的last.fm API,可以在这里找到.
我有一个巨大的数据集,我只使用该文件与用户的艺术家历史和播放.我用Java编写了一个代码,它提取这些艺术家的名字,并根据Artist.getSimilar()方法返回相似的艺术家.
我跑了一次但不是所有的艺术家.我终止了一半的调试.但是,下次,我的结果将从缓存中返回,并且不再将请求发送到Web服务器.问题是,这次我得到的结果只有我终止结果的艺术家.我尝试使用另一种方法artists=Artist.getTopAlbums(),我在中途终止,下次遇到同样的问题.我得到的错误是:
[Fatal Error] :513:9: <strong>XML document structures must start and end within the same entity.</strong>
Exception in thread "main" de.umass.lastfm.CallException: org.xml.sax.SAXParseException; lineNumber: 513; columnNumber: 9; XML document structures must start and end within the same entity.
Caused by: org.xml.sax.SAXParseException; lineNumber: 513; columnNumber: 9; XML document structures must start and end within the same entity.
at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:251)
at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:300)
Run Code Online (Sandbox Code Playgroud)
还有一堆其他例外,这些不是重要的部分.
我尝试重新安装eclipse,在-clean模式下启动eclipse 并清理工作区.没有任何效果.我也创建了一个新的工作区,但缓存不断回来.我正在使用Eclipse 3.8.也许在eclipse中清除缓存的有效方法会有所帮助吗?我该怎么做 似乎没什么用.(此外,没有选项可以像在许多文章中所建议的那样在Window> Preferences中手动清理缓存).
或者我还需要做其他事情吗?任何帮助深表感谢.提前致谢.
我的java代码(工作正常,没有错误):
//in …Run Code Online (Sandbox Code Playgroud)