মাভেন প্রকল্প স্থাপন করা java.util.zip.ZipException: অবৈধ LOC শিরোলেখ (খারাপ স্বাক্ষর)


164

আমি চালানোর সময় আমি নীচের ব্যতিক্রম পাচ্ছি mvn install। এমনকি আমি স্থানীয় ভাণ্ডার মুছে ফেলেছি এবং আবার একই ব্যতিক্রম পেয়ে দৌড়ে এসেছি।

[ERROR] org.apache.maven.plugins: maven-শেড-প্লাগইন: 2.1: ছায়া (ডিফল্ট) প্রজেক্ট কোর-ব্যাচে কার্যকর করতে ব্যর্থ: শেডযুক্ত জার তৈরিতে ত্রুটি: অবৈধ LOC শিরোনাম (খারাপ স্বাক্ষর) -> [সহায়তা 1 ]

<?xml version="1.0" encoding="UTF-8"?>
<plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-shade-plugin</artifactId>
   <version>2.1</version>
   <configuration>
      <skipTests>true</skipTests>
   </configuration>
   <executions>
      <execution>
         <phase>package</phase>
         <goals>
            <goal>shade</goal>
         </goals>
         <configuration>
            <artifactSet>
               <excludes>
                  <exclude>commons-logging:commons-logging:jar:*</exclude>
               </excludes>
            </artifactSet>
            <filters>
               <filter>
                  <artifact>*:*</artifact>
                  <excludes>
                     <!-- workaround for a spring issues -->
                     <exclude>META-INF/*.SF</exclude>
                     <exclude>META-INF/*.DSA</exclude>
                     <exclude>META-INF/*.RSA</exclude>
                     <!-- don't want to pick up any other log4j.xml -->
                     <exclude>log4j.xml</exclude>
                  </excludes>
               </filter>
            </filters>
            <!-- May be needed to work around another issue in Spring -->
            <transformers>
               <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                  <resource>META-INF/spring.handlers</resource>
               </transformer>
               <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                  <resource>META-INF/spring.schemas</resource>
               </transformer>
            </transformers>
         </configuration>
      </execution>
   </executions>
</plugin>

ত্রুটি:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-shade-plugin:2.1:shade (default) on project cores-batch: Error creating shaded jar: invalid LOC header (bad signature) -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-shade-plugin:2.1:shade (default) on project cores-batch: Error creating shaded jar: invalid LOC header (bad signature)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:217)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320)
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
    at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537)
    at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)
Caused by: org.apache.maven.plugin.MojoExecutionException: Error creating shaded jar: invalid LOC header (bad signature)
    at org.apache.maven.plugins.shade.mojo.ShadeMojo.execute(ShadeMojo.java:528)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)
    ... 19 more
Caused by: java.util.zip.ZipException: invalid LOC header (bad signature)
    at java.util.zip.ZipFile.read(Native Method)
    at java.util.zip.ZipFile.access$1400(ZipFile.java:56)
    at java.util.zip.ZipFile$ZipFileInputStream.read(ZipFile.java:679)
    at java.util.zip.ZipFile$ZipFileInflaterInputStream.fill(ZipFile.java:415)
    at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:158)
    at java.io.FilterInputStream.read(FilterInputStream.java:107)
    at org.codehaus.plexus.util.IOUtil.copy(IOUtil.java:189)
    at org.codehaus.plexus.util.IOUtil.copy(IOUtil.java:175)
    at org.apache.maven.plugins.shade.DefaultShader.addResource(DefaultShader.java:427)
    at org.apache.maven.plugins.shade.DefaultShader.shade(DefaultShader.java:186)
    at org.apache.maven.plugins.shade.mojo.ShadeMojo.execute(ShadeMojo.java:458)
    ... 21 more
[ERROR] 
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException

1
এই সমস্যার জন্য একটি প্লাগইন তৈরি করেছেন -> github.com/goxr3plus/
দুর্নীতিগ্রস্থ জার্স

1
@ GOXR3PLUS rep রেপোতে আসলেই কোড নেই (README এর ক্লাস বাদে), কোনও ম্যাভেন প্লাগইনের চেয়েও কম। আমি মনে করি একটি ম্যাভেন প্লাগইনই সেরা সমাধান হয়ে উঠবে, আসলে - বা বিদ্যমান প্লাগইনগুলির মধ্যে কেবলমাত্র একটির এক্সটেনশন যা এরকম কিছু করার অনুমতি দেয় mvn dependencies validate...
মার্কো

সংগ্রহস্থলের জন্য মার্কো কোডটি ক্লাসের এক
হ'ল

উত্তর:


79

আপনার কোন জারটি সমস্যা দিচ্ছে তা পরীক্ষা করা দরকার। এটা অবশ্যই দুর্নীতিগ্রস্থ হতে হবে। সেই জারটি মুছুন এবং mvn spring-boot:runআবার কমান্ড রান করুন । একটি জার আরও দূষিত হয়ে থাকতে পারে তাই প্রতিবার সেই জারটি মুছতে আপনার এই আদেশটি চালানো উচিত। আমার ক্ষেত্রে মাইএসকিএল, জ্যাকসন, অ্যাসপেক্ট জারগুলি mvn spring-boot:run3 বার কমান্ড দুর্নীতিগ্রস্থ হয়েছিল এবং আমি এটি বের করে .m2ফোল্ডার থেকে জারগুলি মুছে ফেলেছিলাম । এখন বিষয়টি সমাধান হয়েছে।


218

জার ফাইলটি দূষিত হতে পারে। নিম্নলিখিত ফোল্ডারের বিষয়বস্তু সরানোর চেষ্টা করুন:

 C:\Users\[username]\.m2\repository

তারপরে আপনার প্রকল্পটিতে ডান ক্লিক করুন, ম্যাভেন নির্বাচন করুন, প্রকল্প আপডেট করুন, স্ন্যাপশটস / রিলিজের ফোর্স আপডেট দেখুন।


4
এটি সমাধান হিসাবে চিহ্নিত করা উচিত। আমি বিশ্বাস করি এটি সম্পর্কিত অন্যান্য বেশ কয়েকটি প্রশ্নেরও সমাধান, যার কোনও উত্তর নেই। ধন্যবাদ শিব!
হ্যাক-আর

1
খুব সুন্দর .. 7 ঘন্টা ব্যয় করার পরে আমি সমাধানটি খুঁজে পেলাম ... আপনার জন্য মানুষ KUDOS ....
সুফিয়ান আনসারী

4
এটি কাজ করে তবে পুরো মভেন লোকাল রিপোজিটরি মুছে ফেলা ভাল বিকল্প নয়। কেবল সম্পর্কিত জার ফাইলগুলি মুছুন এবং এটি যথেষ্ট।
লেভেন্ট ডিভিলিওগ্লু

2
সমস্ত নির্ভরতা মুছতে হবে না, শীর্ষে আপনি খুঁজে পেতে পারেন কোনটি নির্ভরতা খারাপ এলওসি হেডার রয়েছে।
উমার ফারাজ

2
কেবল স্পষ্টভাবে লক্ষ করুন: invalid LOC headerগ্রেডল বিল্ডে যখন কারও মুখোমুখি হয়, আপনি কেবল ~/.gradle/cachesফোল্ডার (লিনাক্স) মুছবেন ।
মার্টিন ভ্যাসেটিকা

110

মূল সমস্যাটি কলুষিত জারগুলি।

দুর্নীতিগ্রস্থটিকে সন্ধান করার জন্য আপনাকে অবশ্যই একটিলিপ্সের ব্রেকপয়েন্টস ভিউতে একটি জাভা এক্সসেপশন ব্রেকপয়েন্ট বা আপনার পছন্দসই আইডিই যুক্ত করতে হবে, এটি নির্বাচন করুন java.util.zip.ZipException শ্রেণিটি এবং টমক্যাট উদাহরণটি পুনরায় চালু করতে হবে।

যখন জেভিএম ZipExceptionব্রেকপয়েন্টে স্থগিত করে আপনাকে অবশ্যই JarFile.getManifestFromReference()স্ট্যাক ট্রেসে যেতে হবে এবং nameফাইলের নাম দেখতে অ্যাট্রিবিউটটি পরীক্ষা করতে হবে।

এর পরে আপনার ফাইলটি ফাইল সিস্টেম থেকে মুছে ফেলা উচিত এবং তারপরে আপনার প্রকল্পটি ডান ক্লিক করুন, মাভেন, আপডেট প্রকল্প নির্বাচন করুন, স্ন্যাপশটস / রিলিজের ফোর্স আপডেট চেক করুন।


11
আমি বিশ্বাস করি এটি গ্রহণযোগ্য উত্তর হওয়া উচিত। কেবল কয়েকশ জার ফাইল সরানো এবং সেগুলি পুনরায় ডাউনলোড করা কার্যকর সমাধান নয় not
মোহসেন

11
rm -rf .m2 = কার্যকর
জেরিল কুক

2
সেখানে দুর্দান্ত ডিবাগিং কৌশল। পুরো নির্ভরতা বা শৈলীগুলি ডাউনলোড করতে আমাকে ব্যান্ডউইথ নষ্ট করা থেকে বাঁচিয়েছে। ধন্যবাদ.
থারিক নগ্রোহোতোমো

3
দুর্দান্ত কৌশল!। আমি জারফাইল ফ্রেমটি খুঁজে পেলাম না, তবে এটি এখানে জিপফিল $ জিপফাইলিপুট স্ট্রিম.ড্রেড ফ্রেমে ZipFile.this.name এক্সপ্রেশন হিসাবে পাওয়া গেছে।
rlpatrao

2
এই দূষিত জারগুলির একটি সহজ উদাহরণ: stackoverflow.com/a/46623719/3128926 সমস্যাটি কী তা বুঝতে 2 ঘন্টা সময় নিয়েছিল । বিটিডব্লিউ, কেবলমাত্র সম্পর্কিত জার ফাইলগুলি মুছে ফেলা পুরো মাভেন স্থানীয় ক্যাশে সাফ করার পরিবর্তে যথেষ্ট।
লেভেন্ট ডিভিলিওগ্লু

41

থেকে gsitgithub / এটি-currupt-jars.txt নিম্নলিখিত কমান্ড তালিকা সব সংগ্রহস্থলের মধ্যে দূষিত বয়াম ফাইল:

find  /home/me/.m2/repository/ -name "*jar" | xargs -L 1 zip -T | grep error | grep invalid

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

উদাহরণ আউটপুট:

warning [/cygdrive/J/repo/net/java/dev/jna/jna/4.1.0/jna-4.1.0.jar]:  98304 extra bytes at beginning or within zipfile
  (attempting to process anyway)
file #1:  bad zipfile offset (local header sig):  98304
  (attempting to re-compensate)
zip error: Zip file invalid, could not spawn unzip, or wrong unzip (original files unmodified)

1
sudo find ./repository/ -name "*jar" | sudo xargs -L 1 zip -T | grep error | grep invalid আমাকে দেয় xargs: zip: No such file or directory। এটি উইন্ডোতে উবুন্টুতে বাশ ব্যবহার করছে,
ফাই

1
@ liltitus27 এই কমান্ড লাইনটি zip -Tপ্রতিটি জারের নীচে প্রতিটি পরীক্ষার (পরীক্ষা) চালায় repository, তারপরে কোন জারগুলি অবৈধ সংকুচিত ফাইলগুলি ফিল্টার করে। আপনার কি zipকমান্ড উপলব্ধ আছে?
জাভিয়ের

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

2
আপনি সেরা, মানুষ!
ইগোর মাস্টারনয়

ধারণাটি হ'ল zip -Tপ্রতিটি জারের নীচে সংরক্ষণ করা হবে .m2/repository। উইন্ডোজে আপনি এটি সাইগউইন ( /cygdrive/C/Users/torno/.m2/repository) তে চালাতে পারেন যেমনটি আমি করেছি এবং আমি মনে করি আপনি এটি উইন্ডোজ 10 ( /mnt/c/Users/torno/.m2/repository) তে বাশ দিয়ে চালাতে পারেন । আমি পাওয়ারশেলের সাথে কীভাবে সমতুল্য স্ক্রিপ্ট লিখব তা তদন্ত করিনি, এবং আমার ধারণা এটি কোনও সিএমডি প্রম্পট দিয়ে সম্ভব নয় possible
জাভিয়ের

11

আমি আমার অনুশীলন দিতে চাই।

আপনার পছন্দসই আইডিই ব্যবহার করুন, উদাহরণস্বরূপ এখানে গ্রহণ করুন:

  1. ব্যতিক্রম স্ট্যাকের মধ্যে একটি উপযুক্ত অবস্থান সন্ধান করুন
  2. শর্তযুক্ত ব্রেকপয়েন্টটি সেট করুন
  3. এটি ডিবাগ
  4. এটি ব্যতিক্রমের আগে কলুষিত জারটি মুদ্রণ করবে

এখানে চিত্র বর্ণনা লিখুন


1
এটি একটি আরও উত্তম সমাধান যা পুরো এম 2 রেপোজিটরিগুলি সাফ করে, যা আমার ক্ষেত্রে আবার ডাউনলোড করতে যুগে যুগে গ্রহণ করবে।
মার্টিন ক্যাসিডি

5

আমার জন্য সমাধানটি চালানো mvnছিল -X:

$ mvn package -X

তারপরে আউটপুটটির পিছনে পিছনে তাকান যতক্ষণ না আপনি ব্যর্থতাটি দেখে এবং তারপরে আপনি এমভিএন প্রক্রিয়া করার চেষ্টা করেছিল এমন শেষ জার ফাইলটি না পাওয়া পর্যন্ত চালিয়ে যান:

...
... <<output ommitted>>
...
[DEBUG] Processing JAR /Users/snowch/.m2/repository/org/eclipse/jetty/jetty-server/9.2.15.v20160210/jetty-server-9.2.15.v20160210.jar
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3.607 s
[INFO] Finished at: 2017-10-04T14:30:13+01:00
[INFO] Final Memory: 23M/370M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-shade-plugin:3.1.0:shade (default) on project kafka-connect-on-cloud-foundry: Error creating shaded jar: invalid LOC header (bad signature) -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-shade-plugin:3.1.0:shade (default) on project kafka-connect-on-cloud-foundry: Error creating shaded jar: invalid LOC header (bad signature)

এটি ব্যর্থ হওয়ার আগে শেষ পাত্রটি দেখুন এবং এটি স্থানীয় সংগ্রহস্থল থেকে সরান

$ rm -rf /Users/snowch/.m2/repository/org/eclipse/jetty/jetty-server/9.2.15.v20160210/

2

আপনার পোম ফাইলে maven সংকলকটির জন্য কনফিগারেশনের সমস্যা মনে হচ্ছে। ডিফল্ট সংস্করণ জাভা উত্স এবং লক্ষ্য 1.5, এমনকি ব্যবহৃত জেডিকে উচ্চতর সংস্করণ রয়েছে।

ঠিক করতে, উচ্চতর জাভা সংস্করণ সহ মাভেন সংকলক প্লাগইন কনফিগারেশন বিভাগ যুক্ত করুন:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-compiler-plugin</artifactId>
  <version>3.6.1</version>
  <configuration>
    <source>1.6</source>
    <target>1.6</target>
  </configuration>
</plugin>

আরও তথ্যের জন্য এই লিঙ্কগুলি পরীক্ষা করুন:

মাভেন সংকলক

বাগ রিপোর্ট


1

এই উত্তরটি ডিভোপস / সিস্টেম অ্যাডমিন ছেলেদের পক্ষে নয়, তবে যারা আইডিই ব্যবহার করছেন গ্রহণের মতো এবং সমস্যার মুখোমুখি invalid LOC header (bad signature)

আপনি নিম্নরূপে maven নির্ভরতা আপডেট করতে বাধ্য করতে পারেন:

এখানে চিত্র বর্ণনা লিখুন

এখানে চিত্র বর্ণনা লিখুন


1

এখানে জাভাতে একটি ছোট ডিটেক্টর লেখা আছে, কেবল অনুলিপি করুন এবং চালান :)

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;
import java.util.jar.JarFile;
import java.util.stream.Collectors;

public class JarValidator {

    public static void main(String[] args) throws IOException {
        Path repositoryPath = Paths.get("C:\\Users\\goxr3plus\\.m2");

        // Check if the main Repository Exists
        if (Files.exists(repositoryPath)) {

            // Create a class instance
            JarValidator jv = new JarValidator();

            List<String> jarReport = new ArrayList<>();
            jarReport.add("Repository to process: " + repositoryPath.toString());

            // Get all the directory files
            List<Path> jarFiles = jv.getFiles(repositoryPath, ".jar");
            jarReport.add("Number of jars to process: " + jarFiles.size());
            jarReport.addAll(jv.openJars(jarFiles, true));

            // Print the report
            jarReport.stream().forEach(System.out::println);

        } else {
            System.out.println("Repository path " + repositoryPath + " does not exist.");
        }
    }

    /**
     * Get all the files from the given directory matching the specified extension
     * 
     * @param filePath      Absolute File Path
     * @param fileExtension File extension
     * @return A list of all the files contained in the directory
     * @throws IOException
     */
    private List<Path> getFiles(Path filePath, String fileExtension) throws IOException {
        return Files.walk(filePath).filter(p -> p.toString().endsWith(fileExtension)).collect(Collectors.toList());
    }

    /**
     * Try to open all the jar files
     * 
     * @param jarFiles
     * @return A List of Messages for Corrupted Jars
     */
    private List<String> openJars(List<Path> jarFiles, boolean showOkayJars) {
        int[] badJars = { 0 };
        List<String> messages = new ArrayList<>();

        // For Each Jar
        jarFiles.forEach(path -> {

            try (JarFile file = new JarFile(path.toFile())) {
                if (showOkayJars)
                    messages.add("OK : " + path.toString());
            } catch (IOException ex) {
                messages.add(path.toAbsolutePath() + " threw exception: " + ex.toString());
                badJars[0]++;
            }
        });

        messages.add("Total bad jars = " + badJars[0]);
        return messages;
    }

}

আউটপুট

Repository to process: C:\Users\goxr3plus\.m2
Number of jars to process: 4920
C:\Users\goxr3plus\.m2\repository\bouncycastle\isoparser-1.1.18.jar threw exception: java.util.zip.ZipException: zip END header not found
Total bad jars = 1
BUILD SUCCESSFUL (total time: 2 seconds)

1

আমরা কমপক্ষে দুটি বিকল্পের সাহায্যে ম্যাভেনে চেকসামের বৈধতা জোর করতে পারি:

1. যোগ --strict-checksums কমান্ডে যুক্ত করা।

২. আমাদের মভেন সেটিংস ফাইলে নিম্নলিখিত কনফিগারেশন যুক্ত করুন:

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
                          https://maven.apache.org/xsd/settings-1.0.0.xsd">
    <!--...-->
    <profiles>
        <profile>
            <!--...-->
            <repositories>
                <repository>
                    <id>codehausSnapshots</id>
                    <name>Codehaus Snapshots</name>
                    <releases>
                        <enabled>false</enabled>
                        <updatePolicy>always</updatePolicy>
                        <checksumPolicy>fail</checksumPolicy>
                    </releases>
                    <snapshots>
                        <enabled>true</enabled>
                        <updatePolicy>never</updatePolicy>
                        <checksumPolicy>fail</checksumPolicy>
                    </snapshots>
                    <url>
                        <!--...-->
                    </url>
                </repository>
            </repositories>
            <pluginRepositories>
                <!--...-->
            </pluginRepositories>
            <!--...-->
        </profile>
    </profiles>
    <!--...-->
</settings>

এই পোস্টে আরও বিশদ: https://dzone.com/articles/maven-artifact-checksums- কি


0

.M2 / সংগ্রহস্থল অপসারণের বাইরে, সার্ভার থেকে অ্যাপ্লিকেশন সরান, সার্ভার চালান (অ্যাপ্লিকেশন ছাড়াই), এটি বন্ধ করুন এবং আবার অ্যাপ্লিকেশন যুক্ত করুন। এখন এটা কাজ করার কথা। কিছু কারণে কেবল ইন্টারফেস থেকে সার্ভার ফোল্ডারগুলি পরিষ্কার করা একই প্রভাব ফেলবে না।


0

আমার স্থানীয় ওয়েবলোগিক উদাহরণটিতে আমার কান স্থাপন করার সময় আমি এই সমস্যার মুখোমুখি হয়েছি। স্থানীয় সংগ্রহস্থল সাফ করা এবং কান তৈরি করা আমার জন্য সমস্যাটি পুনরায় সমাধান করেছে।

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