Я разрабатываю веб-сервис REST в Скале с использованием эталонной реализации Jersey JAX-RS и получаю странную ошибку.
Я пытаюсь создать объект ContentDisposition с помощью ContentDisposition.ContentDisposityBuilder .
ContentDisposition.ContentDisposityBuilder
имеет два типа T расширяет ContentDisposition.ContentDisposityBuilder
и V расширяет ContentDisposition
. Метод type
объекта ContentDisposition
возвращает экземпляр построителя.
Код
val contentDisposition = ContentDisposition.`type`(MediaType.APPLICATION_OCTET_STREAM).build()
работает, однако
val contentDisposition = ContentDisposition.`type`(MediaType.APPLICATION_OCTET_STREAM).fileName("dummy").build()
приводит к ошибке компилятора
error: value build is not a member of ?0
val contentDisposition = ContentDisposition.`type`(MediaType.APPLICATION_OCTET_STREAM).fileName("dummy").build()
^
(Обратите внимание, что тип
должен быть помещен в «кавычки», поскольку это ключевое слово в Scala)
fileName
из ContentDisposureBuilder
возвращает экземпляр T
, поэтому это должно работать.
Я не понимаю этого. Есть идеи? Я использую Scala 2.9.0.1 по пути.
Обновление:
Это работает. Но зачем мне здесь кастинг?
val contentDisposition = ContentDisposition.`type`(MediaType.APPLICATION_OCTET_STREAM)
.fileName("dummy")
.asInstanceOf[ContentDisposition.ContentDispositionBuilder[_,_]]
.build()
-121--1517269-
Я пытаюсь построить общую библиотеку объектов, которая будет открыта программой с помощью dlopen (). Эта библиотека будет использовать функции, предоставляемые отдельной статической библиотекой.
Я включил соответствующий флаг на линии связи, чтобы извлечь статическую библиотеку при связывании динамической (например, у меня есть -lfoo для libfoo.a), и компоновщик не жалуется. Однако, когда основная программа вызывает dlopen () в динамической библиотеке, вызов завершается ошибкой с сообщением «undefined symbol», ссылающимся на символ из статической библиотеки.
Running nm означает, что рассматриваемый символ не определен в динамической библиотеке, и основная программа не содержит его, так как я могу заставить компоновщика втянуть этот символ? Сам символ находится в разделе неинициализированных данных (тип символа «B» на выходе nm).