লম্বোকের @ এসএলএফ 4 জে এবং ইন্টেলিজ দিয়ে বিল্ডিং: প্রতীক লগ খুঁজে পাওয়া যায় না


112

আমার একটি মাভেন প্রকল্প রয়েছে যা কমান্ড লাইন থেকে কোনও সমস্যা ছাড়াই তৈরি করে। যাইহোক, আমি যখন এটি ইন্টেলিজে দিয়ে তৈরি করি তখন ত্রুটিটি পাই:

java: FileName.java:89: cannot find symbol
symbol  : variable log

জাভা ফাইলে কোনও লগ সংজ্ঞায়িত বা আমদানি করা হয়নি, তবে একটি রয়েছে

@Slf4j
final public class FileName {

ক্লাস বডির আগে বিবৃতি যা লগ শ্রেণীর সংজ্ঞা দেয়।

প্রকল্প কাঠামো উইন্ডোতে, এর জন্য ক্লাস:

Maven: org.slf4j:jcl-over-slf4j:1.6.1
Maven: org.slf4j:slf4j-api:1.6.6
Maven: org.slf4j:slf4j-log4j12:1.6.6
Maven: org.slf4j:slf4j-simple:1.6.6

লাইব্রেরির অধীনে তালিকাভুক্ত এবং ডাউনলোড এবং উপলব্ধ হিসাবে চিহ্নিত করা হয়।

কোনও ধারণা কেন এটি কমান্ড লাইনের মাধ্যমে মাভেন দিয়ে তৈরি করবে, তবে ইন্টেলিজের মাধ্যমে নয় এবং কীভাবে সমস্যাটি সমাধান করবেন?


5
একই সমস্যা হ'ল, লম্বোক প্লাগইন পুনরায় ইনস্টল করা সহায়তা করেছিল।
অ্যালেক্স শুমিলভ

উত্তর:


170

লম্বোক প্লাগইন ইনস্টল করা ছাড়াও , " Enable annotation processing" চেকবাক্সটি নীচে টিক দেওয়া আছে তা নিশ্চিত করুন:

Preferences > Compiler > Annotation Processors

দ্রষ্টব্য: ইন্টেলিজি 2017 দিয়ে শুরু করে, " Enable Annotation Processing" চেকবাক্স এতে সরানো হয়েছে:

Settings > Build, Execution, Deployment > Compiler > Annotation Processors

1
আমার কাছে টিকা প্রক্রিয়াকরণ সক্ষম নেই এবং কাজ করছে: | আমার কাছে লম্বোক প্লাগইন অন্তর্ভুক্ত রয়েছে।
বেন জর্জ

আমি প্লাগইন ইনস্টল করেছি এবং এটি এই সেটিংটি পরিবর্তন না করেই কাজ করে। যাইহোক, আমি ভাল পরিমাপের জন্য এটি পরিবর্তন করার সিদ্ধান্ত নিয়েছে।
শেলডোনক্রেগার

6
ইন্টেলিজজে 2017.2 এবং লোমবক প্লাগইন 0.14.16 ব্যবহার করে "টিকা প্রক্রিয়াকরণ সক্ষম করুন" সেট করা প্রয়োজনীয় ছিল এবং চেকবাক্সগুলি পছন্দসমূহ -> বিল্ড, এক্সিকিউশন, ডিপ্লোয়মেন্ট -> সংকলক -> টিকা প্রসেসরের অধীনে পাওয়া যায়।
নাইমি

1
ইন্টেলিজজে 2018.2, লম্বোক প্লাগইন ইনস্টল করা হয়েছে 1.14। আমাকে এখনও ইনটেলিজেটে টিকা প্রক্রিয়াকরণ সক্ষম করতে হয়েছিল। ফাইল-> সেটিংস-> বিল্ড, এক্সিকিউশন, স্থাপনা-> সংকলক-> টিকা প্রসেসর। ইন্টেলিজি আমার সাথে সত্যিকার অর্থে পয়েন্ট জিতছে না।
দেমানিয়াক

32

সম্ভবত, এটি আপনি ব্যবহার করছেন লম্বক @ এসএলএফ 4 জোট । আপনি যদি ইন্টেলিজ লম্বোক টীকা সনাক্ত করতে চান তবে আপনাকে ইন্টেলিজে লম্বোক প্লাগইন ইনস্টল করতে হবে। অন্যথায়, আপনি যদি এমন একটি ক্ষেত্র ব্যবহারের চেষ্টা করেন যা অস্তিত্বহীন?


1
আমি লম্বোক প্লাগইন ইনস্টল করেছি। কনফিগারেশন বিকল্পের ক্ষেত্রে তেমন কিছু নেই বলে মনে হয়। সম্ভবত এটি প্লাগইনে একটি বাগ আছে?
ব্যবহারকারী 1991839

1
আমি এটি আইডিইএ 11 এবং 12 দিয়ে সাফল্যের সাথে ব্যবহার করেছি মাঝে মধ্যে, কিছুটা লোম্বোক সম্পর্কে "ভুলে" যায় বলে মনে হয় এবং উত্স কোডে আমি লাল রেখাগুলির একগুচ্ছ পাই, তবে এটি এখনও আমার জন্য তৈরি করে। এটি আসে এবং যায়, যদিও প্লাগইনটি অবশ্যই বাগ-মুক্ত নয়।
রায়ান স্টুয়ার্ট

আপনি কি জানেন যে এটি পাস করার জন্য কোনও কর্মপরিকল্পনা রয়েছে কিনা? প্লাগ-ইন না করেই সম্ভবত লম্বোক গ্রন্থাগারগুলির ইন্টেলিজকে অবহিত করার মতো? আমি ডিবাগিং পরীক্ষার জন্য
ইন্টেলিজিকে

দুঃখিত, আপনাকে সেখানে সাহায্য করতে পারে না। আমি এখনও লম্বোককে খুব বেশি ব্যবহার করিনি। আমি কয়েক জায়গায় এটি চেষ্টা করে দেখেছি। আমি প্লাগইনটির প্রকল্প পৃষ্ঠাটি পরীক্ষা করে দেখব, তবে আমার মনে হচ্ছে এটির আশেপাশে খুব বড় একটি সম্প্রদায় নেই।
রায়ান স্টুয়ার্ট

23

ইনটেলিজ সংস্করণ 2016, 2017 এ, পছন্দগুলি সক্ষম করুন -> সংকলক -> টিকা প্রসেসরগুলি আমার পক্ষে কাজ করে না!

নিম্নলিখিত অতিরিক্ত চেকবক্স সাহায্য করে: এখানে চিত্র বর্ণনা লিখুন


1
আমি প্লাগইন যুক্ত করেছি এবং এনোটেশন প্রসেসর সক্ষম করেছি, এখনও ভাগ্য নেই। আপনি কীভাবে উপরের চেকবক্সটি অ্যাক্সেস করবেন তা সরবরাহ করতে পারেন?
ফিলিপ জন

@ ফিলিপজান: পছন্দসই অনুসন্ধান বাক্সে "লম্বোক" টাইপ করুন?
টিম লং

আসলে আমাদের "org.slf4j" নির্ভরতাও যুক্ত করতে হবে
ভ্যাসিল সারজিনস্কিই


10

আমি হয়ত কোনও মৃত বিষয়টিকে অবহিত করছি তবে আপনি যদি লগব্যাক-কোর এবং লগব্যাক-ক্লাসিক সহ অন্তর্ভুক্ত থাকেন তবে আপনার নির্ভরতাগুলি (উদাহরণস্বরূপ মাভেনের পোম) পরীক্ষা করা একটি সহজ সমাধান ।

Slf4j কেবল ইন্টারফেস, আপনার কাজ করার জন্য এটির পিছনে কংক্রিট বাস্তবায়ন প্রয়োজন।

আইডিইএ জগাখিচুড়ি করে আমাকে দু'বার ফাঁকি দেওয়া হয়েছে , এখন আমি যেতে ভাল: ডি


7

আমার জন্য কাজ !!! এটি সার্কেলসিআই এবং জেনকিন্সেও ব্যর্থ হয়েছিল।

আপনি যদি গ্রেডল ব্যবহারকারী হন তবে আপনার নির্ভরতাগুলির মধ্যে নিম্নলিখিতগুলি যুক্ত করার চেষ্টা করুন:

dependencies {
    //Other Dependencies >>

    //LOMBOK Dependencies
    compileOnly 'org.projectlombok:lombok'
    annotationProcessor 'org.projectlombok:lombok'
    testAnnotationProcessor 'org.projectlombok:lombok'
    testCompile 'org.projectlombok:lombok'
    testImplementation 'org.projectlombok:lombok'
}

গ্রেডল ব্যবহার করার সময় আমার শেষ 3 আইটেমগুলি যোগ করার দরকার ছিল। পূর্ববর্তী প্রকল্পের জন্য আমি ইতিমধ্যে লম্বোক প্লাগইন এবং এনটোটেশন প্রসেসরের চেকবক্সটি আগের প্রকল্পটির জন্য যত্ন নিয়েছিলাম যার জন্য আমরা মাভেন ব্যবহার করেছি। লম্বোককে নির্বাচিত করে একটি স্প্রিং বুট প্রকল্প তৈরি করতে ইন্টেলিজি ব্যবহার করার পরে আমি এই ত্রুটির মুখোমুখি হয়েছি; এটি সংকলন কেবল এবং টীকা প্রসেসর লাইন অন্তর্ভুক্ত, কিন্তু পরীক্ষা * লাইন না।
জেনসন

4

আইডিইএ 13 এ এটি আর কোনও সমস্যা বলে মনে হচ্ছে না, আপনার কেবল লমবক প্লাগইন ইনস্টল করা উচিত।


4

আমি সবেমাত্র সর্বশেষতম আইডিয়া ভার্সনটি 2108.1 ইনস্টল করেছি এবং লম্বাক প্লাগইন ইনস্টল করার পরে এই সমস্যাটি খুঁজে পেয়েছি এবং আইডিয়া সমাধানের পুনরায় আরম্ভ করব।


4

আপনি যদি মাভেন ব্যবহার করছেন তবে maven-compiler-pluginনীচের মতো দেখানো অনুসারে এনটেশন প্রসেসরের তালিকায় লম্বোক পাথ যুক্ত করার চেষ্টা করুন ।

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.1</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
                <annotationProcessorPaths>
                    <path>
                        <groupId>org.mapstruct</groupId>
                        <artifactId>mapstruct-processor</artifactId>
                        <version>1.3.0.Final</version>
                    </path>
                    <path>
                        <groupId>org.projectlombok</groupId>
                        <artifactId>lombok</artifactId>
                        <version>1.18.10</version>
                    </path>
                </annotationProcessorPaths>
            </configuration>
        </plugin>

আপনার লম্বোকের সংস্করণ অনুসারে সংস্করণটি পরিবর্তন করুন। এটি বাদে আপনি নিম্নলিখিতটি সম্পন্ন করেছেন তা নিশ্চিত করুন

  • ইন্টেলিজের জন্য লম্বোক প্লাগইন ইনস্টল করা হয়েছে।
  • অধীনে আপনার প্রকল্পের জন্য টীকা প্রক্রিয়াকরণ সক্ষম File -> Settings -> Build, Execution, Deployment -> Compiler -> Annotation Processor। আমার জন্য উভয়, Obtain processors from project classpathএবং Processor pathকাজ করছে। সুতরাং আপনার জন্য কী কাজ করবে তা নিশ্চিত নন, তবে যে কোনও ক্ষেত্রেই চেষ্টা করুন।

আর বরং অন্ধকারে ঘন্টার পর ঘন্টা শুটিং করা। অ্যানোটেশন প্রসেসরগুলি কীভাবে কাজ করে এবং সংকলক দ্বারা ব্যবহৃত হয় তা একটু পড়তে সহায়তা করতে পারে। তাই নীচে দ্রুত পড়ুন।

http://hannesdorfmann.com/annotation-processing/annotationprocessing101


এটিই আমার জন্য কাজ করা একমাত্র সমাধান!
চিমছিম

2

এটি আমার পক্ষে কাজ করেছে: File -> Settings -> Build, Execution, Deployment -> Compiler -> Annotation Processor

'এনটোটেশন প্রক্রিয়াকরণ সক্ষম করুন' এ টিক দিন। Apply

ঘনিষ্ঠ


2

আমি উল্লিখিত উত্তরগুলির প্রায় সমস্ত চেষ্টা করেছিলাম কিন্তু কিছুই আমার পক্ষে কার্যকর হয়নি। আমার গ্রেড বিল্ড প্রতিবার ব্যর্থ হয়েছিল। সবেমাত্র এই সমাধানটি পাওয়া গেছে:

যোগ annotationProcessor 'org.projectlombok:lombok' আপনার বিল্ড.gradle ।

এটি আমার পক্ষে কাজ করেছে।


2

ক্লাস থেকে @ এসএলএফ 4 জে টিকা মুছে ফেলা এবং তারপরে এটি পুনরায় যুক্ত করা আমার পক্ষে কাজ করেছে।


2

1 আমার গ্রেড লম্বোক নির্ভরশীলতা:

implementation 'org.projectlombok:lombok:1.18.10'
annotationProcessor 'org.projectlombok:lombok:1.18.10'

2 আপনি লম্বোক প্লাগইন ইনস্টল করেছেন তা বিবেচনায় রেখে আইডিইএ (সেটিংস) এ "টীকাগুলি ..." সক্ষম করার পরে, এটি আমার একই সমস্যার সমাধান করেছে


1

আমি JDK8 এর অধীনে সংকলন করার সময় লম্বোকের একটি পুরানো সংস্করণ সহ এই সমস্যাটি দেখছিলাম। প্রকল্পটিকে জেডিকে 7-এ পুনরায় সেট করার ফলে সমস্যাটি সরে গেছে।


পমের লম্বোক নির্ভরতা আপগ্রেড করাও কাজ করে :)
ক্রিস্টোফ মোইন

1

এটি ওপির সমস্যা হত না, তবে অন্য যে কেউ সফলতার সাথে সবকিছু চেষ্টা করে :

আমারও একই রকম লক্ষণ ছিল। যখনই আমি একটির পরে তৈরি করেছি mvn clean, এটি log, বা getXYZ(), বা builder(), বা কিছুই খুঁজে পেত না ।

[ERROR]   symbol:   variable log
[ERROR]   location: class com.example.MyClass
[ERROR] /Path/To/Some/Java/src/main/com/example/MyClass.java:[30,38] cannot find symbol
[ERROR]   symbol:   method builder()
[ERROR]   location: class com.example.MyClass

প্রতিটি উত্তর পড়ার পরে আমি কোয়েরিডিএসএল / জেপিএ / হাইবারনেট / লম্বোক / ইনটেলিজে / মাভিন ইস্যুগুলির কোনও লাভ হয়নি, আমি খুঁজে বের করেছিলাম যে অপরাধী একটি স্ট্যাটিক ফিল্ডে টীকায়িত একটি @Getterপদ্ধতির একক স্থিতিশীল আমদানি

বসন্ত ১.১4.১৪.আরলেস, ইন্টেলিজ 2019.1.1

@SpringBootApplication
public class BarApplication implements ApplicationContextAware {
  @Getter
  private static ApplicationContext applicationContext;

  // ... start Spring application, and grab hold of ApplicationContext as it comes past
}
import ...
import static BarApplication.getApplicationContext;

@Slf4j
public class IMakeItAllFail {
   public IMakeItAllFail() {
      log.info("{}", getApplicationContext());
   }
}
@Slf4j
public class Foo {
  Foo() {
    log.info("I fail to compile but I have nothing to do with the other classes!");
  }
}

1

এটি কোনও ইন্টেলিজ সমস্যা নয়। আপনি যদি কনসোলের আওতায় চেষ্টা করেন তবে এমভিএন ইনস্টল করুন , ব্রেক হয়ে যাবে। Lombok.extern থেকে সমস্ত টিকাগুলি নির্ভরতা যুক্ত করে। এই প্যাকেজটি পরবর্তী টীকাগুলিকে দলবদ্ধ করে:

  • CommonsLog
  • পায়ুপথ
  • লগিন
  • JBossLog
  • Log4
  • Log4j2
  • Slf4j
  • XSlf4j

উদাহরণস্বরূপ, Slf4j এর জন্য এটি আপনার পম.এক্সএমএলে এই নির্ভরতা যুক্ত করতে হবে

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>${slf4j.version}</version>
</dependency>

0

এনোটেশন প্রসেসর সক্ষম করার পরে এবং লম্বোক প্লাগইন ইনস্টল করার পরেও এটি কার্যকর হয়নি। আমরা আইডিয়া বিকল্পটি "ডেলিগেট আইডিই বিল্ড টু গ্রেড" চেক করে এর চারপাশে কাজ করেছি


0

আমার জন্য জিনিসগুলি কীভাবে সাজানো হয়েছিল তা হল মাভেন সেটিংসে "প্লাগইন রেজিস্ট্রি ব্যবহার করুন" চেকবক্সটি টিক্ করা।

পাথটি হ'ল ফাইল -> পছন্দসমূহ -> বিল্ড, এক্সিকিউশন, স্থাপনা -> বিল্ড সরঞ্জাম -> ম্যাভেন


0

প্রতিটি মডিউলে .idea ফোল্ডার এবং .iml ফাইলগুলি মুছুন এবং সমাধানটি পুনর্নির্মাণ করুন।


0

আমার লম্বোক প্লাগইন ছিল, টীকাগুলি সক্ষম ছিল, এটি কমান্ড লাইন থেকে সংকলন করছিল - সবকিছু এবং এটি এখনও আমার প্রকল্পটিকে ম্যাভেন হিসাবে দেখেনি (সমস্ত উত্স নির্ভরতা উত্স ফাইলগুলিতে লাল ছিল)। তারপরে আমি দুবার SHIFT টি ক্লিক করে 'ম্যাভেন' অনুসন্ধান করেছি এবং ফলাফলগুলির মধ্যে রয়েছে 'সমস্ত ম্যাভেন প্রকল্পগুলি পুনরায় লোড করুন'। এটি চালানোর পরে মাভেন ট্যাবটি উপস্থিত হয়েছিল এবং আমি সংকলন করতে সক্ষম হয়েছি এবং উত্স কোডের সমস্ত লাল বর্ণচিহ্ন অদৃশ্য হয়ে গেছে।


0

একটি সাধারণ জিনিস তবে আমি এটি বুঝতে পেরেছি: @Logক্লাসে যোগ করা মিস করলাম ।

@Log
public class YourClassName {


}

এটি কারও সাহায্য করতে পারে।


0

আমি একই সমস্যা আছে; আমি গ্রেড এবং আইডিইএ ব্যবহার করি;

দেখা যাচ্ছে যে এটি গ্রেডের ভুল সংস্করণের কারণে ঘটে।

গ্রেড \ র‍্যাপার \ গ্রেড- র‍্যাপার.প্রোপার্টিগুলিতে, এটি হ'ল:

distributionUrl=https\://services.gradle.org/distributions/gradle-4.8-bin.zip

তবে আমি আইডিইএতে সংস্করণটি নির্দিষ্ট করে দিয়েছি

D:\Library\gradle-5.2.1

গ্রেডের সংস্করণটি 4.10.x হ্রাস করার পরে, সমস্যাটি চলে গেছে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.