2016-08-01 6 views
0

konnten keine Informationen speziell zu dem, was ich sehe, finden.Intellij "kann Symbol nicht auflösen" in Zwei-Buchstaben-Paketname

Mein Hauptpaket ist re.dice unter dem alle meine Code gehalten wird.

IntelliJ derzeit Hervorhebung der aus zwei Buchstaben bestehenden Teil re in rot, um die Fehlermeldung angezeigt wird re „‚‘Kann nicht Symbol lösen“.

Mein Projekt baut korrekt in Maven und ich habe noch keine Funktionalität in der Klasse implementiert, um zu sehen, ob es weitere Probleme gibt.

Ist das ein Fehler in IntelliJ? Oder sind zweistellige Paketnamen problematisch? Ich kann nicht sehen, dass es für irgendetwas reserviert ist - ich frage mich, ob es nur eine Einstellung irgendwo ist, die ich IntelliJ bewusst machen muss?

EDIT Hier ist meine Konfigurationsklasse

package re.dice.config; 

import freemarker.template.utility.XmlEscape; 
import org.springframework.context.annotation.Bean; 
import org.springframework.context.annotation.ComponentScan; 
import org.springframework.context.annotation.Configuration; 
import org.springframework.http.MediaType; 
import org.springframework.web.servlet.config.annotation.*; 
import org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer; 

import java.util.HashMap; 
import java.util.Map; 

@Configuration 
@ComponentScan("re.dice") 
@EnableWebMvc 
public class AppConfig extends WebMvcConfigurerAdapter { 

    @Bean(name = "freemarkerConfig") 
    public FreeMarkerConfigurer freemarkerConfig() { 
     FreeMarkerConfigurer configurer = new FreeMarkerConfigurer(); 
     configurer.setTemplateLoaderPath("/templates"); 
     Map<String,Object> map = new HashMap<>(); 
     map.put("xml_escape", new XmlEscape()); 
     configurer.setFreemarkerVariables(map); 
     return configurer; 
    } 

    @Override 
    public void configureContentNegotiation(ContentNegotiationConfigurer configurer) { 
     configurer.ignoreUnknownPathExtensions(false).defaultContentType(MediaType.TEXT_HTML); 
    } 

    @Override 
    public void configureViewResolvers(ViewResolverRegistry registry) { 
     registry.freeMarker(); 
    } 

    @Override 
    public void addResourceHandlers(final ResourceHandlerRegistry registry) { 
     registry.addResourceHandler("/css/**").addResourceLocations("classpath:/css/"); 
     registry.addResourceHandler("/resources/**").addResourceLocations("/resources"); 
    } 
} 

Und hier ist mein pom.xml

<?xml version="1.0" encoding="UTF-8"?> 
<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>re.dice</groupId> 
    <artifactId>frontend</artifactId> 
    <name>frontend</name> 
    <version>0.1-SNAPSHOT</version> 

    <packaging>war</packaging> 

    <parent> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-parent</artifactId> 
     <version>1.4.0.RELEASE</version> 
    </parent> 

    <properties> 
     <java.version>1.8</java.version> 
    </properties> 

    <dependencies> 

     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-jdbc</artifactId> 
      <version>4.3.2.RELEASE</version> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-freemarker</artifactId> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter</artifactId> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-jdbc</artifactId> 
     </dependency> 

     <dependency> 
      <groupId>mysql</groupId> 
      <artifactId>mysql-connector-java</artifactId> 
      <version>6.0.3</version> 
     </dependency> 

     <dependency> 
      <groupId>org.hibernate.javax.persistence</groupId> 
      <artifactId>hibernate-jpa-2.0-api</artifactId> 
      <version>1.0.1.Final</version> 
     </dependency> 

     <dependency> 
      <groupId>org.webjars</groupId> 
      <artifactId>jquery</artifactId> 
      <version>2.1.4</version> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-data-jpa</artifactId> 
     </dependency> 

     <dependency> 
      <groupId>org.webjars</groupId> 
      <artifactId>bootstrap</artifactId> 
      <version>3.2.0</version> 
      <exclusions> 
       <exclusion> 
        <groupId>org.webjars</groupId> 
        <artifactId>jquery</artifactId> 
       </exclusion> 
      </exclusions> 
     </dependency> 
    </dependencies> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-maven-plugin</artifactId> 
      </plugin> 
     </plugins> 
    </build> 
</project> 

Dies ist das einzige Projekt, das ich zur Zeit haben, die unter diesem Paketnamen ist.

Im Nachhinein - ich weiß, dies ist kein "Bug" mit IntelliJ, sondern eher eine "Eigenheit" vielleicht.

+0

Intellij Idea hat keine Probleme mit 2-stelligen Paketnamen, auch 1-Char Namen sind in Ordnung. Offenbar haben Sie Probleme mit der Konfiguration des Klassenpfads. Aber Sie haben keinen Code oder Konfigurationsdateien veröffentlicht, so dass es wirklich schwierig ist zu erkennen, was die Ursache ist –

+0

Kein Fehler in IntelliJ. Ich bin sicher, es ist dein Code/deine Konfiguration. – duffymo

+0

Ich habe einen Vorschlag. Das Paket 're.dice' ist Teil eines anderen von dir geschriebenen Maven-Projekts. Und du versuchst es zu beziehen, wenn du aus einem anderen Maven-Projekt kommst. Stellen Sie in diesem Fall sicher, dass Sie ein Projekt mit 're.dice' in Ihrem lokalen maven Repo installiert haben. Führen Sie 'mvn clean install' auf dem Projekt mit' re.dice' aus, dann machen Sie das selbe für Ihr Projekt, das 're.dice' verweist. –

Antwort

0

re.dice bedeutet, dass Sie zwei Pakete haben, in denen re und dice sind. Und dice Ordner befindet sich in der re Ordner.

Sie können den Ordner re in Ihrer Projektdatei erstellen und darin dice einfügen; oder, die klügste, können Sie Ihren Paketnamen wie "re_dice" oder etwas anderes ändern. Sie sollten '.s' nicht verwenden, wenn Sie Ihren Dateien Namen geben.

+0

Das hat mir tatsächlich gezeigt, dass der Paketname als 're.dice' erstellt wurde und nicht zwei getrennte Ordner, wie ich vorher gedacht hatte. IntelliJ scheint ein wenig witzig beim Ziehen und Ablegen von Paketen ineinander um zu reorganisieren. Zum Beispiel - Erstellen eines Paketordners 'Würfel' unter' re', dann ziehen Sie das Paket 'config' hinein, benennt es effektiv in' dice.re' um. Ich löste das, indem ich alle Pakete, die ich verschieben wollte, gleichzeitig mitschleppte - das behielt die Paketstruktur, die ich suchte. – alexanderhosford