小编Jim*_*son的帖子

WAS 6.1 java.lang.VerifyError:违反了类加载约束

环境是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 …

java websphere classloader verifyerror

10
推荐指数
1
解决办法
3万
查看次数

bash coproc和剩余的coproc输出

我需要在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)

bash coproc

10
推荐指数
1
解决办法
3920
查看次数

如何从fortran代码中删除文件?

我需要从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)

不起作用.我 …

linux bash shell fortran file

10
推荐指数
2
解决办法
1万
查看次数

Spring/Hibernate异常:没有活动事务,createCriteria无效

我在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)

spring tomcat hibernate transactions jax-ws

9
推荐指数
1
解决办法
1万
查看次数

Struts 2"%"符号和"#"符号表示OGNL

任何人都可以告诉我如何在STRUTS2 OGNL中使用"%"和"#"符号?我谷歌周围,但找不到任何有价值的信息.或者给我一个文档的链接.

谢谢

java struts2 ognl

9
推荐指数
1
解决办法
5619
查看次数

SED - 删除字符串后跟LineFeed(\n)

我找不到合适的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如何做到这一点,因为我相信它是可能的!但是,如果它可以通过另一种方式完成,那么只要它在命令行上,我也很高兴,因为它必须运行在许多文件上.

非常感谢.

unix linux vi awk sed

9
推荐指数
3
解决办法
6463
查看次数

错误:在Maven安装期间无法确定<T> T的类型参数

当我尝试执行"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,我已经能够运行我的应用程序,没有任何麻烦或警告.

  • JDK 1.6
  • Eclipse Indigo Service Release 2
  • Maven 3.0.4

java eclipse jdk1.6 maven

9
推荐指数
2
解决办法
8492
查看次数

如何在Java中获取Double的最大安全整数

铭记Java的双打双精度浮点数字.并且没有失去精度的最大整数是90071992547409912 53 -1

是否有任何干净的方法来获得这个价值? 例如,像JavaScript的MAX_SAFE_INTEGER中的常量一样

java math

9
推荐指数
1
解决办法
359
查看次数

如何在REST中实现粗粒度乐观锁?

我已经为我的REST资源实现了乐观锁定,这些资源通过将GET中的版本号传回PUT调用,与数据库表进行一对一映射.如果在我执行GET和PUT之间数据库中的版本号发生了更改,则会发生乐观锁定异常.很简单的设计.

现在,如何对映射到多个数据库表的复合REST资源执行相同的操作?我不想传回多个版本字段(每个数据表对应一个复合资源).复合资源的简单示例是/ FooBar,其中/ Foo和/ Bar是非复合资源.

我基本上是在寻找Fowler的粗粒度锁定模式的REST实现示例:http://martinfowler.com/eaaCatalog/coarseGrainedLock.html

java rest optimistic-locking

8
推荐指数
1
解决办法
2199
查看次数

eclipse中的SaxParseException:XML文档结构必须在同一个实体内开始和结束

我正在使用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)

java xml eclipse sax last.fm

8
推荐指数
1
解决办法
3万
查看次数