specjbb 牽手 jdk 系列(二):安裝jdk及運行specjbb

1. 設置java環境變量等:

export JAVA_HOME=/home/yjiang2/jdk/jdk13-dwhite-centos7.5
export PATH=$JAVA_HOME/bin:$PATH
export SPECJBB_HOME=/home/yjiang2/specjbb
export CLASSPATH=.:$JAVA_HOME/lib:$SPECJBB_HOME/lib

2. 碰到Error: java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException

Preparing to launch All-in-one SPECjbb2015.

Reading property file: /home/yjiang2/bin/SPECjbb/config/specjbb2015.props

     0s: Enumerating plugins...
     0s:    Connectivity:
     0s:             HTTP_Grizzly: Grizzly HTTP server, JDK HTTP client
     0s:              NIO_Grizzly: Grizzly NIO server, Grizzly NIO client
     0s:               HTTP_Jetty: Jetty HTTP server, JDK HTTP client
     0s:    Snapshot:
     0s:                 InMemory: Stores snapshots in heap memory
     0s:    Data Writers:
     0s:                     Demo: Send all frame to listener
     0s:                   InFile: Writing Data into file
     0s:                   Silent: Drop all frames
     0s:
     0s: Validating kit integrity...
     0s: Kit validation had passed.
     0s:
     0s: Tests are skipped.
     0s:
     0s: <Thu Sep 05 17:02:06 CST 2019> org.spec.jbb.ic: Init IC
Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException
        at org.spec.jbb.core.comm.transport.TransportFactory.getEncapsulationLayer(TransportFactory.java:120)
        at org.spec.jbb.core.comm.transport.TransportFactory.getByteTransport(TransportFactory.java:51)
        at org.spec.jbb.core.comm.transport.TransportFactory.getTransport(TransportFactory.java:77)
        at org.spec.jbb.core.comm.transport.TransportFactory.<init>(TransportFactory.java:35)
        at org.spec.jbb.core.comm.transport.TransportFactory.getInstance(TransportFactory.java:28)
        at org.spec.jbb.core.comm.Interconnect$UplinkImpl.<init>(Interconnect.java:689)
        at org.spec.jbb.core.comm.Interconnect.addLink(Interconnect.java:252)
        at org.spec.jbb.core.comm.Interconnect.addLink(Interconnect.java:280)
        at org.spec.jbb.core.comm.Interconnect.<init>(Interconnect.java:177)
        at org.spec.jbb.core.comm.InterconnectFactory.getMaster(InterconnectFactory.java:22)
        at org.spec.jbb.Launcher$CompositeRunner.run(Launcher.java:398)
        at org.spec.jbb.Launcher.launch(Launcher.java:191)
        at org.spec.jbb.Launcher.main(Launcher.java:70)
Caused by: java.lang.ClassNotFoundException: javax.xml.bind.JAXBException
        at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:604)
        at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
        ... 13 more

問題分析:

JAXB API類作爲Java 6/7/8中JDK的一部分提供的。由於JAXB API被認爲是Java EE API,因此不再包含在Java SE 9的默認類路徑中。新版本的jdk13也不包含,需要自行下載。進入specjbb/lib目錄,用下面命令下載

wget http://search.maven.org/remotecontent?filepath=com/sun/activation/javax.activation/1.2.0/javax.activation-1.2.0.jar -O javax.activation-1.2.0.jar
wget http://search.maven.org/remotecontent?filepath=javax/xml/bind/jaxb-api/2.3.0/jaxb-api-2.3.0.jar -O jaxb-api-2.3.0.jar
wget http://search.maven.org/remotecontent?filepath=com/sun/xml/bind/jaxb-core/2.3.0/jaxb-core-2.3.0.jar -O jaxb-core-2.3.0.jar
wget http://search.maven.org/remotecontent?filepath=com/sun/xml/bind/jaxb-impl/2.3.0/jaxb-impl-2.3.0.jar -O jaxb-impl-2.3.0.jar

解決方法: 

下載好JAXB相關庫後,給運行的java 添加-Xbootclasspath 參數包含JAXB庫

java -Xbootclasspath/a:/home/yjiang2/jdk/jdk13-dwhite-centos7.5/lib/jaxb-api-2.3.0.jar:/home/yjiang2/jdk/jdk13-dwhite-centos7.5/lib/jaxb-core-2.3.0.jar:/home/yjiang2/jdk/jdk13-dwhite-centos7.5/lib/jaxb-impl-2.3.0.jar:/home/yjiang2/jdk/jdk13-dwhite-centos7.5/lib/javax.activation-1.2.0.jar 

3. 需要進入specjbb目錄,運行

/home/yjiang2/jdk/jdk13-dwhite-centos7.5/bin/java -Xbootclasspath/a:/home/yjiang2/jdk/jdk13-dwhite-centos7.5/lib/jaxb-api-2.3.0.jar:/home/yjiang2/jdk/jdk13-dwhite-centos7.5/lib/jaxb-core-2.3.0.jar:/home/yjiang2/jdk/jdk13-dwhite-centos7.5/lib/jaxb-impl-2.3.0.jar:/home/yjiang2/jdk/jdk13-dwhite-centos7.5/lib/javax.activation-1.2.0.jar -Xms210g -Xmx210g -Xmn208g -XX:+UseParallelOldGC -XX:ParallelGCThreads=224 -XX:TargetSurvivorRatio=95 -XX:SurvivorRatio=55 -XX:MaxTenuringThreshold=15 -XX:-UseAdaptiveSizePolicy -XX:+AlwaysPreTouch -XX:-UsePerfData -XX:+UseBiasedLocking -XX:+UseLSE -XX:+UseNUMA -XX:-UseNUMAInterleaving -XX:InlineSmallCode=20k -XX:CompileThreshold=1000 -XX:+AvoidUnalignedAccesses -XX:+UseSIMDForMemoryOps -XX:-UseFPUForSpilling -XX:-SegmentedCodeCache -XX:MaxInlineLevel=15 --add-modules ALL-SYSTEM  -Dspecjbb.controller.rtcurve.warmup.step=0.7 -Dspecjbb.forkjoin.workers.Tier1=200 -Dspecjbb.forkjoin.workers.Tier2=1 -Dspecjbb.forkjoin.workers.Tier3=32 -Dspecjbb.customerDriver.threads=96  -jar /home/yjiang2/specjbb/specjbb2015.jar -m COMPOSITE -p /home/yjiang2/specjbb/config/specjbb2015.props

 儘管我運行java命令時-p 指定了 specjbb的specjbb2015.props

-p /home/yjiang2/specjbb/config/specjbb2015.props

運行的時候還是報錯

Tests are skipped.
  8303s:
  8303s: Generating level 0 report from ./specjbb2015-C-20190906-00001.data.gz


SPECjbb2015 Java Business Benchmark
 (c) Standard Performance Evaluation Corporation, 2015

Preparing to launch SPECjbb2015 reporter.

Problem reading property file: ./config/specjbb2015.props, exiting

Mandatory options are:
  -m <mode>                    Runner mode

。。。
  -p <FILE>                    Property file (default: ./config/specjbb2015.props)

需要進入specjbb目錄,運行。最後提示測試benchmark的報告成功生成 。

Tests are skipped.
  8241s:
  8241s: Generating level 0 report from ./specjbb2015-C-20190909-00001.data.gz


SPECjbb2015 Java Business Benchmark
 (c) Standard Performance Evaluation Corporation, 2015

Preparing to launch SPECjbb2015 reporter.

Reading property file: /home/yjiang2/bin/SPECjbb/./config/specjbb2015.props
Report directory is result/specjbb2015-C-20190909-00001/report-00001
  8242s: Building report...

      2109 msec: Pre-reading source
         0 msec: Validation
         1 msec: Printing JbbProperties
         0 msec: Controller time verification
         5 msec: Dump run logs
         5 msec: Build report with HW/SW parameters
        56 msec: Parsing attributes
         5 msec: Parsing agent names
       155 msec: Building throughput - response time curve
RUN RESULT: hbIR (max attempted) = 87464, hbIR (settled) = 83601, max-jOPS = 76094, critical-jOPS = 54396
        84 msec: Primary metrics calculation
       243 msec: Render Allowed Failures
      1765 msec: Render IR/PR Accuracy
      1576 msec: Request Mix accuracy
      1548 msec: Max Delay during RT curve building
      1677 msec: Render IR by probes tasks
      1686 msec: Overall RT curves
         0 msec: Render RT
        10 msec: Render template to file result/specjbb2015-C-20190909-00001/report-00001/data/specjbb2015-C-20190909-00001-runProperties.txt
        54 msec: Render template to file result/specjbb2015-C-20190909-00001/report-00001/specjbb2015-C-20190909-00001.html
Report generation finished. Wallclock = 4391 msecs, real = 10979 msecs, parallelism = 2.50x

java老版本不支持-XX:-SegmentedCodeCache  --add-modules ALL-SYSTEM,運行命令如下:

/usr/bin/java -Xbootclasspath/a:/home/yjiang2/jdk/jdk13-dwhite-centos7.5/lib/jaxb-api-2.3.0.jar:/home/yjiang2/jdk/jdk13-dwhite-centos7.5/lib/jaxb-core-2.3.0.jar:/home/yjiang2/jdk/jdk13-dwhite-centos7.5/lib/jaxb-impl-2.3.0.jar:/home/yjiang2/jdk/jdk13-dwhite-centos7.5/lib/javax.activation-1.2.0.jar -Xms210g -Xmx210g -Xmn208g -XX:+UseParallelOldGC -XX:ParallelGCThreads=224 -XX:TargetSurvivorRatio=95 -XX:SurvivorRatio=55 -XX:MaxTenuringThreshold=15 -XX:-UseAdaptiveSizePolicy -XX:+AlwaysPreTouch -XX:-UsePerfData -XX:+UseBiasedLocking -XX:+UseLSE -XX:+UseNUMA -XX:-UseNUMAInterleaving -XX:InlineSmallCode=20k -XX:CompileThreshold=1000 -XX:+AvoidUnalignedAccesses -XX:+UseSIMDForMemoryOps -XX:-UseFPUForSpilling -XX:MaxInlineLevel=15 -Dspecjbb.controller.rtcurve.warmup.step=0.7 -Dspecjbb.forkjoin.workers.Tier1=200 -Dspecjbb.forkjoin.workers.Tier2=1 -Dspecjbb.forkjoin.workers.Tier3=32 -Dspecjbb.customerDriver.threads=96  -jar /home/yjiang2/specjbb/specjbb2015.jar -m COMPOSITE -p /home/yjiang2/specjbb/config/specjbb2015.props

參考:

怎麼解決java.lang.NoClassDefFoundError錯誤

java命令執行來依賴包的jar包

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章