2016-04-10 100 views
0

Büyük bir projeyi test etmek için Daikon kullanmaya çalışıyorum, böylece benim için her şeyi derlemek ve çalıştırmak için karıma ihtiyacım vardı. Karıncaya yeni olduğum için Daikon'a verilen basit bir örnekle aşina olmaya çalışıyorum. Yani, en iyi aday örnek Daikon ile ilişkili StackAr paketidir.java derlenmiş dosyayı bir ant hedefine bir argüman olarak geçirin

Daikon'u normal olarak çalıştırmak için, hedeflediğim tüm java dosyalarını derledikten sonra aşağıdaki komutu uygulayacağım. Her iki komut bayrak --daikon ile Chicory arayüzünü kullanarak daikon.jar çalışacak ve enstrüman bunu StackArTester.class alıp çalışacaktır Bu komutla

java -cp "/usr/lib/daikonparent/daikon-5.2.20/daikon.jar:." daikon.Chicory --daikon DataStructures.StackArTester 

eşdeğerdir

java daikon.Chicory --daikon DataStructures.StackArTester 

.

Şimdi şöyle karınca görünüyor kullanarak aynı komutu çalıştırmak için benim girişimi:

<project name="StackAr" default="compile" basedir="."> 
    <description> 
    simple example build file 
    </description> 
    <!-- set global properties for this build --> 
    <property name="src" location="DataStructures"/> 
    <property name="build" location="DataStructures"/> 

    <target name="init"> 
    <!-- Create the time stamp --> 
    <tstamp/> 
    </target> 

    <target name="compile" depends="init" 
     description="compile the source"> 
    <!-- Compile the java code from ${src} into ${build} --> 
    <javac srcdir="${src}" 
      destdir="." 
      debug="on" 
    /> 
    </target> 

    <target name="run" description="run StackArTester"> 
     <java classname="DataStructures.StackArTester"> 
     <classpath> 
      <pathelement location="."/> 
     </classpath> 
     </java> 
    </target> 

    <target name="inv" description="run daikon"> 
     <java classname="daikon.Chicory" > 
     <arg value="--daikon" /> 
     <arg value="DataStructures.StackArTester"/> 
     <classpath> 
      <pathelement path="/usr/lib/daikonparent/daikon-5.2.20/daikon.jar"/> 
     </classpath> 
     </java> 
    </target> 

    <target name="clean" 
     description="clean up"> 
    <!-- Delete the ${build} and ${dist} directory trees --> 
    </target> 
</project> 

hedef compile tüm kaynak dosyaları derlemek için kullanılır ve çalışıyor. Ayrıca, hedeflenen .class dosyasını çalıştırmak için run hedef bir test olarak kullanılır ve çalışıyor. Hedef inv nerede sorun yaşıyorum ve yukarıdaki iki komutla eşdeğer olduğunu varsayalım.

Sorunum, .calss dosyasını Daikon'a nasıl ileteceğimi bildiğimden emin değilim. Gördüğüm sonuçlardan, ilk argümanın/işaretin --daikon tanınmasının pozitif olduğunu düşünüyorum. Ancak, lastiklerimin çoğunda DataStructures.StackArTester ikinci argümanı için bunun tanındığını görüyorum, ancak Daikon'un sınıf yolu ile bir sorunu var. ant inv Yukarıdaki senaryoyu Basamak aşağıdaki hata iletisini oluşturur: Hata ben denemek olabilirdi konusunda fikir gelmiyor

Error: Could not find or load main class DataStructures.StackArTester 

olduğunu

Buildfile: /usr/lib/daikonparent/daikon-5.2.20/examples/java-examples/StackAr/build.xml 

inv: 
    [java] 
    [java] Executing target program: java -cp /usr/share/ant/lib/ant-launcher.jar:/usr/lib/daikonparent/daikon-5.2.20/daikon.jar:/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/rt.jar:/usr/lib/jvm/java-7-openjdk-amd64/lib/tools.jar:/usr/share/ant/lib/ant-testutil.jar:/usr/share/ant/lib/ant-apache-log4j.jar:/usr/share/ant/lib/ant-javamail.jar:/usr/share/ant/lib/ant-jsch.jar:/usr/share/ant/lib/ant-apache-regexp.jar:/usr/share/ant/lib/ant-antlr.jar:/usr/share/ant/lib/ant-swing.jar:/usr/share/ant/lib/ant-apache-oro.jar:/usr/share/ant/lib/ant-apache-bcel.jar:/usr/share/ant/lib/ant-apache-xalan2.jar:/usr/share/ant/lib/ant-junit.jar:/usr/share/ant/lib/ant-launcher.jar:/usr/share/ant/lib/ant-apache-bsf.jar:/usr/share/ant/lib/ant-jdepend.jar:/usr/share/ant/lib/ant-apache-resolver.jar:/usr/share/ant/lib/ant-jmf.jar:/usr/share/ant/lib/ant-commons-logging.jar:/usr/share/ant/lib/ant-commons-net.jar:/usr/share/ant/lib/ant-junit4.jar:/usr/share/ant/lib/ant.jar:/usr/lib/jvm/java-7-openjdk-amd64/lib/tools.jar -ea -Xmx1000m -javaagent:/usr/lib/daikonparent/daikon-5.2.20/java/ChicoryPremain.jar=--daikon --dtrace-file=StackArTester.dtrace.gz DataStructures.StackArTester 
    [java] entered daikon.chicory.Runtime.setDtrace(./StackArTester.dtrace.gz, false)... 
    [java] Error: Could not find or load main class DataStructures.StackArTester 
    [java] Chicory warning: No methods were instrumented. 
    [java] Warning: Did not run Daikon because target exited with 1 status 
    [java] Java Result: 1 

BUILD SUCCESSFUL 
Total time: 0 seconds 

Not. Umarım yukarıdaki bilgi yeterlidir. Orijinal komutları ve ant komutunu çalıştırırken aynı dizinde olduğumu lütfen unutmayın.

Thakns ...

cevap

0

hata

[java] Error: Could not find or load main class DataStructures.StackArTester 

Java üzerinde sınıf sınıf DataStructures.StackArTester bulamadık demektir.

[java] Executing target program ile başlayan satırda, -cp komut satırı bağımsız değişkeni, sınıf yolunuzdur. Sınıf yolu, DataStructures/StackArTester.class içeren bir dizin veya kavanoz dosyası içermelidir. Sadece sınıf yolunu büyütmek zorundasın.

+0

Merhaba Michael, öncelikle hem Google grubundaki hem de buradan destek için teşekkür ederiz. Sorunun sınıf yolunda olduğunun farkındayım (bunu açıklığa kavuşturmamam kötü oldu), benim sorunum bunu yapı betiğine ekleyeceğim. Sanırım bunu yapmak için tüm açık yolları denedim. Örneğin, tıpkı Daikon'un kavanozu için yaptığım gibi eklemeye çalıştı. '' Ayrıca ' ziyadoof

+0

[UPDATE] Sorunu çözdüm, ama bunun neden böyle olduğunu anlamıyor. Tembel davrandım ve Daikon'un kavanozunu 'CLASSPATH'ma kurmadı. Ve fikirlerin dışında olduğumu düşündüğümde, listeden onu geçmem gerektiğini düşündüm. Şimdi işe yarıyor, ama söylediğim şeyin mantıklı gelmemesi nedeniyle hala karıncaların yapım senaryosunda daikon kavanozunun yolunu belirtmem gerekiyor. Bunu kaldırmak, 'CLASSPATH' üzerinde belirtilse bile 'daikon.jar' bulmayan bir hata üretecektir. – ziyadoof