2017-02-20 3 views
0

После установки плагинов eclipse scala и плагина eclipse maven для scala.Ошибка: не удалось найти или загрузить основной класс в scala

Я новичок в scala, поэтому я попытался обеспечить, чтобы окружающая среда работала после тестирования проекта scala hello world. Он работает так, как ожидалось.

Но я столкнулся с трудностями при попытке выполнить проект, который я проверил из репозитория компании. Независимо от того, что я делаю (чистую, строю, чистую установку через mave и т. Д.), Я получаю «Ошибка: не удалось найти или загрузить основной класс com.company.team.spark.sqlutil.testQuery» при попытке запустить даже небольшая приветственная программа мира внутри проекта. Моя догадка говорит, что eclipse не может создавать файлы классов для проекта из-за pom issse, но я не могу прибить его даже после нескольких попыток. Пожалуйста, помогите мне понять это

Версия: Затмение Луна релиз (4.4.0) Сложение ID: 20140612-0600

Скала - 2.10.6

Scalacode - testQuery.scala

package com.company.team.spark.sqlutil 

object testQuery { 
    def main(args: Array[String]): Unit = { 
    print ("Hello") 
    } 
} 

Ниже приведен POM, который я использовал.

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>com.company.team.spark</groupId> 
    <artifactId>HomeSpark</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>jar</packaging> 

    <name>HomeSpark</name> 
    <url>http://maven.apache.org</url> 

    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <lib.dir>${project.basedir}\lib\</lib.dir> 
    </properties> 

    <dependencies> 
    <!-- <dependency> 
      <groupId>org.apache.hadoop</groupId> 
      <artifactId>hadoop-core</artifactId> 
      <version>1.2.1</version> 
     </dependency> 
     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>3.8.1</version> 
      <scope>system</scope> 
      <systemPath>${lib.dir}junit-3.8.1.jar</systemPath> 
     </dependency> 

     <dependency> 
      <groupId>org.apache.spark</groupId> 
      <artifactId>spark-core_2.10</artifactId> 
      <version>2.1.0</version> 
      <scope>system</scope> 
      <systemPath>${lib.dir}spark-core_2.10-2.1.0.jar</systemPath> 
     </dependency> 

     <dependency> 
      <groupId>org.apache.spark</groupId> 
      <artifactId>spark-sql_2.10</artifactId> 
      <version>2.1.0</version> 
      <scope>system</scope> 
      <systemPath>${lib.dir}spark-sql_2.10-2.1.0.jar</systemPath> 
     </dependency> 

     <dependency> 
      <groupId>com.databricks</groupId> 
      <artifactId>spark-csv_2.10</artifactId> 
      <version>1.5.0</version> 
      <scope>system</scope> 
      <systemPath>${lib.dir}spark-csv_2.10-1.5.0.jar</systemPath> 
     </dependency> --> 

    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>3.8.1</version> 
     <scope>test</scope> 
    </dependency> 

    <!-- https://mvnrepository.com/artifact/org.apache.spark/spark-core_2.10 --> 
<dependency> 
    <groupId>org.apache.spark</groupId> 
    <artifactId>spark-core_2.10</artifactId> 
    <version>2.1.0</version> 
</dependency> 

    <!-- https://mvnrepository.com/artifact/org.apache.spark/spark-sql_2.10 --> 
<dependency> 
    <groupId>org.apache.spark</groupId> 
    <artifactId>spark-sql_2.10</artifactId> 
    <version>2.1.0</version> 
</dependency>  

<!-- https://mvnrepository.com/artifact/com.databricks/spark-csv_2.10 --> 
<dependency> 
    <groupId>com.databricks</groupId> 
    <artifactId>spark-csv_2.10</artifactId> 
    <version>1.5.0</version> 
</dependency> 

<dependency> 
      <groupId>com.amazonaws</groupId> 
      <artifactId>aws-java-sdk</artifactId> 
      <version>1.9.2</version> 
     </dependency> 

    </dependencies> 



<build> 

     <sourceDirectory>${project.basedir}/src/main/scala</sourceDirectory> 

     <testOutputDirectory>${project.build.directory}/test-classes</testOutputDirectory> 

     <plugins><plugin> 

    <groupId>net.alchim31.maven</groupId> 
    <artifactId>scala-maven-plugin</artifactId> 
    <version>3.1.3</version> 
    <executions> 
     <execution> 
      <goals> 
       <goal>compile</goal> 
       <goal>testCompile</goal> 
      </goals> 
     </execution> 
    </executions> 
</plugin></plugins> 

</build>  
</project> 

Link к изображению структуры проекта

+0

это во время работы от затмения? если у вас установлен maven, попробуйте «mvn clean compile» из командной строки, который загрузит вам зависимостей и посмотрит, все ли работает нормально. – prayagupd

+0

@prayagupd Я устал чистить компиляцию через eclipse [run as> maven build], он загрузил зависимости. Но все равно получая ту же ошибку при попытке запустить мир привет через/src/test/scala. код подобен объекта testQuery { Защиту основных (арг: Array [String]): Unit = { печать ("Hello") } } Мои извинения, оставил ту часть, где это было испытание класса. Но ваше предложение действительно работало, когда я переместил его в папку src/main/scala и удалил часть **: Unit = "** только. Спасибо! – stormfield

+0

@prayagupd какие-либо предложения, чтобы его тестовый класс работал? – stormfield

ответ

0

Я был в состоянии решить проблемы, после того, как выбрали Scala IDE над затмить интегрирован с IDE плагин Scala.

также изменил pom.xml на следующее:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.company.fuison</groupId> 
    <artifactId>SomeCloud</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <name>${project.artifactId}</name> 
    <description>My wonderfull scala app</description> 
    <inceptionYear>2015</inceptionYear> 
    <licenses> 
    <license> 
     <name>My License</name> 
     <url>http://....</url> 
     <distribution>repo</distribution> 
    </license> 
    </licenses> 

    <properties> 
    <maven.compiler.source>1.6</maven.compiler.source> 
    <maven.compiler.target>1.6</maven.compiler.target> 
    <encoding>UTF-8</encoding> 
    <scala.version>2.11.5</scala.version> 
    <scala.compat.version>2.11</scala.compat.version> 
    </properties> 

    <dependencies> 
    <dependency> 
     <groupId>org.scala-lang</groupId> 
     <artifactId>scala-library</artifactId> 
     <version>${scala.version}</version> 
    </dependency> 

    <!-- https://mvnrepository.com/artifact/org.apache.spark/spark-core_2.11 --> 
<dependency> 
    <groupId>org.apache.spark</groupId> 
    <artifactId>spark-core_2.11</artifactId> 
    <version>2.0.0</version> 
</dependency> 

    <!-- https://mvnrepository.com/artifact/org.apache.spark/spark-core_2.11 --> 
<dependency> 
    <groupId>org.apache.spark</groupId> 
    <artifactId>spark-sql_2.11</artifactId> 
    <version>2.0.0</version> 
</dependency> 


    <dependency> 
    <groupId>com.amazonaws</groupId> 
    <artifactId>aws-java-sdk</artifactId> 
    <version>1.9.2</version> 
    </dependency> 

<!-- https://mvnrepository.com/artifact/com.databricks/spark-csv_2.11 --> 
<dependency> 
    <groupId>com.databricks</groupId> 
    <artifactId>spark-csv_2.11</artifactId> 
    <version>1.5.0</version> 
</dependency> 
    <!-- Test --> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>4.12</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.specs2</groupId> 
     <artifactId>specs2-core_${scala.compat.version}</artifactId> 
     <version>2.4.16</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.scalatest</groupId> 
     <artifactId>scalatest_${scala.compat.version}</artifactId> 
     <version>2.2.4</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.specs2</groupId> 
     <artifactId>specs2-junit_${scala.compat.version}</artifactId> 
     <version>2.4.16</version> 
     <scope>test</scope> 
    </dependency> 

    <dependency> 
     <groupId>org.apache.logging.log4j</groupId> 
     <artifactId>log4j-api-scala_2.11</artifactId> 
     <version>2.8.1</version> 
    </dependency> 

    <dependency> 
     <groupId>org.apache.logging.log4j</groupId> 
     <artifactId>log4j-core</artifactId> 
     <version>2.8.1</version> 
    </dependency> 



    <!-- https://mvnrepository.com/artifact/org.scala-lang/scala-library 
    <dependency> 
     <groupId>org.scala-lang</groupId> 
     <artifactId>scala-library</artifactId> 
     <version>2.12.1</version> 
    </dependency> 
    --> 
    <!-- https://mvnrepository.com/artifact/com.typesafe.scala-logging/scala-logging_2.11 --> 
    <dependency> 
     <groupId>com.typesafe.scala-logging</groupId> 
     <artifactId>scala-logging_2.11</artifactId> 
     <version>3.5.0</version> 
    </dependency> 


    </dependencies> 

    <build> 
    <resources> 
      <resource> 
       <directory>${project.basedir}/config/log4j</directory> 
      </resource> 
     </resources> 

    <sourceDirectory>src/main/scala</sourceDirectory> 
    <testSourceDirectory>src/test/scala</testSourceDirectory> 
    <plugins> 
     <plugin> 
     <!-- see http://davidb.github.com/scala-maven-plugin --> 
     <groupId>net.alchim31.maven</groupId> 
     <artifactId>scala-maven-plugin</artifactId> 
     <version>3.2.0</version> 
     <executions> 
      <execution> 
      <goals> 
       <goal>compile</goal> 
       <goal>testCompile</goal> 
      </goals> 
      <configuration> 
       <args> 

       <arg>-dependencyfile</arg> 
       <arg>${project.build.directory}/.scala_dependencies</arg> 
       </args> 
      </configuration> 
      </execution> 
     </executions> 
     </plugin> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-surefire-plugin</artifactId> 
     <version>2.18.1</version> 
     <configuration> 
      <useFile>false</useFile> 
      <disableXmlReport>true</disableXmlReport> 
      <!-- If you have classpath issue like NoDefClassError,... --> 
      <!-- useManifestOnlyJar>false</useManifestOnlyJar --> 
      <includes> 
      <include>**/*Test.*</include> 
      <include>**/*Suite.*</include> 
      </includes> 
     </configuration> 
     </plugin> 
    </plugins> 
    </build> 
</project> 
0

Использование компилировать установки в соответствии с требованиями для Maven-лестницу-плагин. Возможно, вы используете чистую установку, которая удаляет сгенерированные файлы .class из/bin, eclipse не может найти или загрузить основной класс.

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