2017-07-20 11 views
6

का समाधान नहीं होता मैं निर्माण के दौरान इस तरह के त्रुटि मिलती है:kapt Protobuf-उत्पन्न वर्गों

e: /Users/some/path/SomeClass.java:86: error: cannot find symbol 
e:  
e:  static ConnectionType getConnectionType(Context context) { 
e:   ^
e: symbol: class ConnectionType 
e: location: class SomeClass 

कहाँ ConnectionType वर्ग Protobuf द्वारा उत्पन्न होता है। तो ऐसा लगता है जैसे कैप्टेड जेनरेटेड क्लास को हल नहीं करता है।

मैंने क्या प्रयास किया है?

sourceSets { 
    main.java.srcDirs += 'src/main/kotlin' 
    main.java.srcDirs += 'build/generated/source/proto/main/java' 
} 

और यह भी मैं यह काम करने से पहले kapt शुरू होता है उत्पन्न वर्गों करना चाहते हैं:

apply plugin: 'kotlin-kapt' 

तो मैं स्रोत सेट करने के लिए brotobuf-उत्पन्न कक्षाओं कहा:

पहले तो मुझे kotlin-apt प्लगइन जोड़ा । तो मैं इस तरह से कार्यों को क्रमबद्ध करने का आदेश देता हूं:

afterEvaluate { 
    def protoTasks = [] 
    tasks.each { task -> 
     if (task.name.contains('proto') || task.name.contains('Proto')) { 
      protoTasks.push(task) 
     } 
    } 

    tasks.each { task -> 
     if (task.name.startsWith('kapt')) { 
      task.dependsOn protoTasks 
     } 
    } 
} 

लेकिन ये सभी चीजें मदद नहीं करती हैं, मुझे अभी भी वही त्रुटि मिल गई है। इसे कैसे हल करें?

+0

क्या आपको यकीन है,: मैं इसे में सही स्वाद नाम का इस्तेमाल किया था, की तरह? तो क्या आप 'वर्ग' फ़ाइल को उदा। आपके क्लास-आउटपुट फ़ोल्डर में 'कनेक्शन टाइप'? – guenhter

+0

@guenhter मैं सिर्फ '.java' फ़ाइलों को देख सकता हूं, लेकिन 'class' फ़ाइलों नहीं। – VasyaFromRussia

+0

क्या आप अपनी कक्षा की 'SomeClass.class' फ़ाइल देख सकते हैं? – guenhter

उत्तर

1

त्रुटि प्रोटोबफ स्रोत सेट के गलत पथ के कारण हुई थी। कि कक्षाओं उत्पन्न कर रहे हैं

sourceSets { 
    // ... 
    main.java.srcDirs += 'build/generated/source/proto/flavor/java' 
} 
बजाय

sourceSets { 
    // ... 
    main.java.srcDirs += 'build/generated/source/proto/main/java' 
} 
संबंधित मुद्दे