2015-01-22 2 views
0

Я не знаю java. Я пытаюсь скомпилировать плагин для Bamboo, используя eclipse. Я получаю ошибку компиляции java. Пожалуйста, помогите мне определить/исправить эту проблему.не может найти символ: class NumberTools

JmeterResultsWriter.java выглядит следующим образом

##########################JmeterResultsWriter.java ################## 

    package com.atlassian.bamboo.plugins.jmeter_aggregator.index; 

    import java.util.Map; 

    import org.apache.lucene.document.Document; 
    import org.apache.lucene.document.Field; 
    import org.apache.lucene.document.NumberTools; 
    import org.apache.lucene.document.Field.Index; 
    import org.apache.lucene.document.Field.Store; 
    import org.jetbrains.annotations.NotNull; 

    import com.atlassian.bamboo.index.CustomPostBuildIndexWriter; 
    import com.atlassian.bamboo.plugins.jmeter_aggregator.builder.JmeterBuildDataHelper; 
    import com.atlassian.bamboo.plugins.jmeter_aggregator.Sampler; 
    import com.atlassian.bamboo.resultsummary.BuildResultsSummary; 
    import com.thoughtworks.xstream.XStream; 

    public class JmeterResultsWriter implements CustomPostBuildIndexWriter 
    { 
     public static final String JMETER_AGGREGATOR_NINETY_PERECENT = "jmeter.aggregator.ninety.percent"; 
     public static final String JMETER_AGGREGATOR_MEDIAN = "jmeter.aggregator.median"; 
     public static final String JMETER_AGGREGATOR_THROUGHPUT = "jmeter.aggregator.throughput"; 

     @SuppressWarnings("unchecked") 
     public void updateIndexDocument(@NotNull Document doc, @NotNull BuildResultsSummary summary) 
     { 
      Map<String, String> data = summary.getCustomBuildData(); 
      String xmlData = data.get(JmeterBuildDataHelper.CUSTOM_BUILD_DATA_MAP); 
      if (xmlData != null) 
      { 
       String xmlTotal = data.get(JmeterBuildDataHelper.CUSTOM_BUILD_DATA_TOTAL); 
       XStream xstream = new XStream(); 
       Sampler sampler = (Sampler) xstream.fromXML(xmlTotal); 

       // Store the total and xmldata unindexed. 
       doc.add(new Field(JmeterBuildDataHelper.CUSTOM_BUILD_DATA_MAP, xmlData, Store.COMPRESS, Index.NO)); 
       doc.add(new Field(JmeterBuildDataHelper.CUSTOM_BUILD_DATA_TOTAL, xmlTotal, Store.COMPRESS, 
        Index.NO)); 
    } 
     } 
     } 

    ################### JmeterResultsReader.java ################### 
     package com.atlassian.bamboo.plugins.jmeter_aggregator.index; 

     import java.util.Map; 

     import org.apache.lucene.document.Document; 
     import org.apache.lucene.document.Field; 

     import com.atlassian.bamboo.index.CustomIndexReader; 
     import com.atlassian.bamboo.plugins.jmeter_aggregator.builder.JmeterBuildDataHelper; 
     import com.atlassian.bamboo.resultsummary.BuildResultsSummary; 

     public class JmeterResultsReader implements CustomIndexReader 
     { 

      public void extractFromDocument(Document doc, BuildResultsSummary summary) 
      { 
       Map<String, String> results = summary.getCustomBuildData(); 
       Field dataField = doc.getField(JmeterBuildDataHelper.CUSTOM_BUILD_DATA_MAP); 
       if (dataField != null) 
       { 
        results.put(JmeterBuildDataHelper.CUSTOM_BUILD_DATA_MAP, dataField.stringValue()); 
       } 
       Field totalField = doc.getField(JmeterBuildDataHelper.CUSTOM_BUILD_DATA_TOTAL); 
       if (totalField != null) 
       { 
        results.put(JmeterBuildDataHelper.CUSTOM_BUILD_DATA_TOTAL, totalField.stringValue()); 
       } 
      } 
     } 

[ERROR] /C:/Users/twinnarasi/workspace/atlassian-bamboo-jmeter-aggregator/src/main/java/JmeterResultsWriter.java : [7,34] C: \ Users \ twinnarasi \ workspace \ atlassian-bamboo-jmeter-aggregator \ src \ main \ java \ JmeterResultsWriter.java: 7: не может найти символ [ERROR] symbol: class NumberTools [ERROR] местоположение: упаковка org.apache.lucene.document


ОШИБКА] /C:/Users/twinnarasi/workspace/atlassian-bamboo-jmeter-aggregator/src/main/java/com/atlassian/bamboo/plugins/jmeter_aggregator/index/JmeterResultsReader.java:[23,40] C: \ Users \ twinnarasi \ workspace \ atlassian-bamboo-jmeter-aggregator \ src \ main \ java \ com \ atlassian \ bamboo \ plugins \ jmeter_aggregator \ index \ JmeterResultsReader.java: 23: несовместимые типы [ERROR] найдено: org .apache.lucene.index.IndexableField [ERROR] требуется: org.apache.lucene.document.Field

+0

Вы используете источник, который работает с Apache Lucene 3.x, но у вас есть Apache Lucene 4.x. Они несовместимы. – RealSkeptic

+0

Спасибо. Это имеет смысл. Но мы используем Lucene 4.x для Bamboo 5.7, и мы не можем понизить до 3.x. Первоначально мы пытаемся скомпилировать плагин JMeter Aggregator (он поддерживался бамбуком только до 5.5.1), поэтому я думаю, что мне нужно модифицировать pom.xml Jmeteraggregator для совместимости с 4.x – VRK

+0

Я не думаю, что это просто вопрос о pom.xml - этот источник напрямую импортирует 'org.apache.lucene.document.NumberTools', которого нет в Lucene 4.x. – RealSkeptic

ответ

0

Как указано в комментариях, вы используете код, написанный для Lucene 3.X, когда вы используете Lucene 4. ИКС. NumberTools был удален в 4.0 (и был устаревшим с 2.9, возможно, раньше).

Для цифровых полей вы должны использовать соответствующий тип поля, вместо того, чтобы вставать на все, что угодно, с его преобразованием. A LongField, или IntField, например.

Если вы действительно должны преобразовать значения самостоятельно, NumericUtils заменяет функциональность старого NumberTools. Таким образом, вместо:

string s = NumberTools.longToString(longval); 
//index the string... 

Вы вместо того, чтобы сделать что-то вроде:

BytesRef longvalRef = new BytesRef(); 
NumericUtils.longToPrefixCoded(longval, 0, longvalRef); 
//index the BytesRef... 

Вы должны действительно просто использовать LongField вместо этого, хотя. См. Примечание к NumericUtils:

ПРИМЕЧАНИЕ. Этот API предназначен только для внутренних целей и может быть изменен несовместимыми способами в следующей версии.

Это, безусловно, имеет 4,0 и 4,10, например.

Я считаю, что вы можете столкнуться с другими проблемами при обновлении этого кода до 4.X. Может показаться, что надо посмотреть Migration Guide.

+0

Я проверяю проект в eclipse, и он сообщил, что импортирует org.apache.lucene.document.NumberTools; на самом деле не используется скриптом. Поэтому я удалил его. Кроме того, я изменил следующее как в файлах считывателя, так и в файле сценария и теперь может скомпилировать его успешно, – VRK

+0

import org.apache.lucene.document.Field; = import org.apache.lucene.Index.IndexableField; Полевые данныеField = IndexableField dataField Общее полеField = IndexableField totalField – VRK

+0

JmeterResultsWriter.java "file Удалено import org.apache.lucene.document.NumberTools; файл – VRK

Смежные вопросы