找到包含给定java类的jar

时间:2015-03-15 09:37:16

标签: java hyperion

我正在尝试找到哪个.jar检测到此错误,以便我可以找出问题所在。这是在hyperion服务器上运行。

[2015-03-15T15:18:35.352+08:00] [Planning0] [WARNING] [] [oracle.EPMHSP.calcmgr_execution] [tid: 144] [userId: <anonymous>] [ecid: 00iRyJJB65hDOd5LzQL6iW000ly40016YL,0:1] [APP: PLANNING#11.1.2.0] [URI: /HyperionPlanning/faces/RunTimePromptTF/BgImage] [SRC_CLASS: com.hyperion.planning.adf.artifact.datacontrol.HspManageArtifactsDC] [SRC_METHOD: executeCalcScript] Error detected while attempting to run job Test_Rule [[
com.hyperion.planning.HspRuntimeException: Error detected while attempting to run job: Test_Rule.
  at com.hyperion.planning.HspAsyncJobsManager.completeJobExceution(HspAsyncJobsManager.java:101)
  at com.hyperion.planning.db.HspFMDBImpl$CalcMgrWrapper.runRule(HspFMDBImpl.java:10411)
  at com.hyperion.planning.db.HspFMDBImpl.runHBRRule(HspFMDBImpl.java:2254)
  at com.hyperion.planning.db.HspFMDBImpl.runCalcScript(HspFMDBImpl.java:2218)
  at com.hyperion.planning.HyperionPlanningBean.runCalcScript(HyperionPlanningBean.java:4028)
  at com.hyperion.planning.adf.artifact.datacontrol.HspManageArtifactsDC.executeCalcScript(HspManageArtifactsDC.java:3518)
  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  at java.lang.reflect.Method.invoke(Method.java:597)
  at oracle.adf.model.binding.DCInvokeMethod.invokeMethod(DCInvokeMethod.java:677)
  at oracle.adf.model.bean.DCBeanDataControl.invokeMethod(DCBeanDataControl.java:445)

3 个答案:

答案 0 :(得分:1)

如果您正在运行linux / unix风格,我通常会通过以下bash脚本找到jar:

for i in $( find LIB_FOLDERS -iname *.jar | xargs ); do 
    ( zipinfo $i | grep -i PATTERN ) && echo $i ; done

LIB_FOLDERS是找到您的罐子的地方,PATTERN是您要找的班级名称的特征部分。这将打印与模式匹配的所有jar文件的名称。大多数IDE允许你“在类路径中搜索一个类”而没有任何命令行麻烦,但我不知道你是否将所有源加载到一个。

答案 1 :(得分:0)

在linux系统上我使用以下命令创建〜/ bin / findjar,然后使用chmod 700并将〜/ bin添加到我的PATH中:

#!/bin/bash

# Usage: findjar <classname or string to search for> [path to search under]
#
class=$1
path=$2

if [[ "$path" = "" ]]; then
  path=.
fi
echo searching for $class in $path
for f in `find $path -name "*.jar"`; do
  match=$(jar tf $f | grep $class);
  if [[ -n "$match" ]]; then
    echo
    echo $f;
    echo "$match"
  fi;
done

答案 2 :(得分:0)

使用JarScan。这是我最喜欢的工具之一,用于搜索某个目录中某个jar中的类。适用于任何平台,简单易用:https://java.net/projects/jarscan/pages/Tutorial/text