пакет javax.annotation.security не существует

Я пытаюсь запустить проект на основе Джерси/1.7 с нуля (в отличие от копирования существующего проекта и добавления нового кода сверху, что обычно делает мой клиент), чтобы узнать, как все работает. Я застрял на очень ранней стадии, пытаясь обработать простой HTTP-запрос:

package com.example.foo.view.rest;

import javax.ws.rs.Path;
import javax.annotation.security.RolesAllowed; // package javax.annotation.security does not exist

@Path("user")
@RolesAllowed("valid-users") // cannot find symbol
public class UserService extends BaseService {
    public UserService() {
        super();
    }
}

Я скопировал эти файлы из другого проекта:

asm-3.1.jar
jackson-core-asl-1.9.2.jar
jackson-jaxrs-1.9.2.jar
jackson-mapper-asl-1.9.2.jar
jackson-xc-1.9.2.jar
jersey-client-1.17.jar
jersey-core-1.17.jar
jersey-json-1.17.jar
jersey-multipart-1.17.jar
jersey-server-1.17.jar
jersey-servlet-1.17.jar
jettison-1.1.jar
jsr311-api-1.1.1.jar

Аутентификация проекта работает с Oracle SSO (Oracle Identity Directory).

Единственный javax.annotation.security.RolesAllowed, который я могу найти, — это интерфейс, и я, конечно же, не вижу фактической реализации нигде в своей кодовой базе. На самом деле весь пакет javax.annotation.security отсутствует. Я даже не знаю, какая библиотека должна это предоставить.

Буду признателен за любую подсказку, какой бы очевидной она ни казалась.


person Álvaro González    schedule 14.04.2020    source источник
comment
это то, что вы ищете? нажмите. Также управлять банками вручную ужасно, вы можете использовать maven или gradle для более простого управления зависимостями.   -  person Amir Schnell    schedule 14.04.2020
comment
@AmirSchnell Я думаю, это означает, что это не часть самого Джерси. Я не могу найти ссылки на javax.annotation-api в других проектах этого заказчика, а поиск javax.annotation.security на этом сайте не дает результатов — возможно, они используют другую реализацию? Project интегрируется с Oracle Portal/Oracle Identity Directory, если это имеет значение. (Я прекрасно понимаю, что кодовая база — это дерьмо, но мы слишком далеко от Силиконовой долины... Если я внедрим такие улучшения, клиент обязательно пожалуется.)   -  person Álvaro González    schedule 14.04.2020
comment
Нет, javax.annotation является частью java, но не включен в jre или jdk. У меня нет опыта работы с Oracle Portal/Oracle Identity Directory, поэтому я не знаю, что они делают. Вы использовали RolesAllowed где-то в других своих проектах? Если да, то откуда импортируется?   -  person Amir Schnell    schedule 14.04.2020
comment
@AmirSchnell Только что нашел JAR в C:\oracle\Middleware\modules\javax.annotation_1.0.0.0_1-0.jar. Я до сих пор не знаю, почему другие проекты, которые успешно используют javax.annotation.security, не ссылаются на такой файл (вероятно, он косвенно включен какой-то конфигурацией, которую я еще не нашел), но это огромное улучшение.   -  person Álvaro González    schedule 14.04.2020
comment
тогда ответ на ваш вопрос? Могу ли я опубликовать ответ, чтобы вы пометили его как правильный?   -  person Amir Schnell    schedule 14.04.2020


Ответы (1)


javax.annotation является частью java, но не включен непосредственно в jre. В трикотаж не входит. Вы должны добавить этот jar в свой проект, чтобы он работал.

person Amir Schnell    schedule 14.04.2020
comment
В конце концов я обнаружил, что каждый проект моего клиента использует другую реализацию. Во всех случаях вам просто нужно убедиться, что под рукой есть правильный файл JAR. Ключевая информация проста: ни JDK, ни Jersey не включают ее, это сторонняя загрузка, и вы можете выбрать любую, если она соответствует интерфейсу. - person Álvaro González; 14.04.2020
comment
На самом деле javax.annotation API был частью JRE, но был удален в Java 11. - person rustyx; 14.03.2021