Ошибка Java: только тип может быть импортирован. XYZ разрешает пакет - PullRequest
70 голосов
/ 07 декабря 2009

Я получаю сообщение об ошибке: «Только тип может быть импортирован. XYZ разрешается в пакет».

Кто-то объяснил причину здесь , но я не уверен, что я должен был сделать, чтобы это исправить. К вашему сведению: я использую Eclipse. Я добавил код, который выполняет импорт ниже. Java.util. * Импорт работает нормально.

 <%@ page import="java.util.*"%>
 <%@ page import="org.eresearch.knowledgeportal.model.Category"%>
 <%@ page import="org.eresearch.knowledgeportal.dao.CategoryDao"%>

 <% 
  CategoryDao catDao = new CategoryDao();
  ArrayList<Category> catList = catDao.selectCategory();

 //
 %>

Изменить: фактическая ошибка ниже:

 org.apache.jasper.JasperException: Unable to compile class for JSP: 

 An error occurred at line: 7 in the generated java file
 Only a type can be imported. org.eresearch.knowledgeportal.model.Category resolves to a package

Ответы [ 22 ]

0 голосов
/ 27 декабря 2016

У меня было то же сообщение об ошибке, и мой способ справиться с ним заключается в следующем:

  1. Сначала проверьте папку с файлами, в которой ваш Tomcat публикует ваше веб-приложение, например, D: \ Java \ workspace.metadata.plugins \ org.eclipse.wst.server.core \ tmp1 \ wtpwebapps \ myDatatable \ WEB-INF \ classes, в которые мы обычно помещаем наши классы. Если это не то место, где вы размещаете свои классы, то вам нужно выяснить, где по умолчанию оно находится, щелкнув правой кнопкой мыши корневое имя веб-приложения -> Путь сборки -> Настроить сборку ванны ...--> Затем проверьте вкладку «Источник» и найдите значение поля «Папка вывода по умолчанию». Это должно быть место, где Tomcat поставит ваши уроки.
  2. Вы увидите, что класс XYZ еще не построен. Чтобы его построить, вы можете перейти в Меню «Проект» -> «Очистить ...» -> Выбрать веб-приложение для очистки.
  3. После завершения, попробуйте перезагрузить сервер tomcat и снова проверить каталог файлов. Ваш класс должен быть там. По крайней мере, это работает для меня. Надеюсь, это поможет.
0 голосов
/ 03 сентября 2014

Вы пытаетесь импортировать переопределенный класс, как я?

Если это так, ваш переопределенный класс находится в неправильном пакете или просто не существует.

Создание или перемещение класса в правильное местоположение (src / [package.package]. [Class]) может решить вашу проблему.

0 голосов
/ 22 апреля 2014

Я решил это, добавив файл jar, содержащий импортированные классы, в WEB-INF/Lib.

0 голосов
/ 07 декабря 2009

Есть еще детали? (Это в JSP как на связанной веб-странице?)

Если это так, вы всегда можете просто использовать полное имя класса.
а не:

import foo.bar.*;
Baz myBaz;

вы можете использовать

foo.bar.Baz myBaz;
0 голосов
/ 03 января 2019

Итак, у меня возникла та же проблема, и я просто хотел дать свое решение. Может быть, кто-то сталкивается с той же проблемой.

Я правильно настроил свой артефакт, но каким-то образом перепутал что-то и удалил папку WEB-INF в одном из моих артефактов.

Когда я просматривал содержимое моего .war-файла, каждый класс присутствовал в правильной структуре папок. Поэтому я не думал, что чего-то не хватает. Но когда я проверил артефакты в Intellij и сравнил их с рабочим артефактом, я понял, что в папке WEB-INF с классами и библиотеками нет.

Добавьте их к артефакту, и он должен работать.

TLDR: Intellij удалил папку WEB-INF из моего артефакта .war. Просто проверьте, не пропал ли ваш. (Project Strucutre -> Артефакты)

0 голосов
/ 05 июля 2017

Обычно это происходит при смешивании (на той же странице jsp) статического импорта jsp:

<%@include file="...

с динамическим импортом jsp:

<jsp:include page="...

и ваш тип уже был импортирован "статическим импортированным" jsp. Когда тот же тип должен использоваться (и затем импортироваться) «динамически импортируемым» jsp ->, это создает исключение: «Только тип может быть импортирован ...»

0 голосов
/ 22 сентября 2012

Мой вклад: я получил эту ошибку, потому что я создал пакет с именем 3lp. Однако, согласно спецификации Java, вы не можете называть ваш пакет, начинающийся с цифры. Я изменил его на _3lp, теперь он работает.

0 голосов
/ 27 мая 2012

У меня была похожая проблема. В затмении я сравнил мой проект с примером проекта, который работает нормально (сгенерированный архетипом maven). Я обнаружил, что мой проект пропустил 2 строки в файле / .classpath. Я скопировал эти 2 строки, и это решило проблему. Кажется, даже если я установил путь сборки в настройках проекта, по некоторым причинам eclipse не обновилась соответственно.

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry kind="src" output="target/classes" path="src/main/java"/>
    <classpathentry kind="src" output="target/test-classes" path="src/test/java"/>
    ...
</classpath>
0 голосов
/ 02 ноября 2012

Могу поспорить, что у вас есть пакет org.ivec.eresearch.knowledgeportal.model. category (small c), и вы работаете в файловой системе без учета регистра, такой как Windows или Mac. Кажется, что компилятор запутывается, когда класс и пакет существуют.

Вы можете переименовать класс «Категория» или пакет «Категория», и эта ошибка исчезнет. К сожалению, я не уверен, что это ошибка Tomcat или ECJ.

0 голосов
/ 16 апреля 2013

Если вы используете Maven и упаковываете свои классы Java в JAR, убедитесь, что JAR обновлен. Все еще предполагая, что JAR находится в вашем классе, конечно.

...