我在django cms的单个实例中设置了多个站点,并使用haystack进行搜索(使用Solr).但是,我得到的search_indexes.py似乎没有任何效果.就像它被忽略了一样,使用了一个默认的.为什么我的search_indexes.py没有生效?
我有以下内容:
settings.py:
HAYSTACK_SITECONF = 'mysite.search_sites'
Run Code Online (Sandbox Code Playgroud)
search_sites.py:
from cms.models import monkeypatch_reverse
import haystack
monkeypatch_reverse()
haystack.autodiscover()
Run Code Online (Sandbox Code Playgroud)
mysite的/应用/ search_indexes.py:
from django.conf import settings
from django.utils.translation import string_concat, ugettext_lazy
from django.utils.html import strip_tags
from haystack import indexes, site
from cms.models.managers import PageManager
from cms.models.pagemodel import Page
from cms.models.pluginmodel import CMSPlugin
def page_index_factory(lang, lang_name):
if isinstance(lang_name, basestring):
lang_name = ugettext_lazy(lang_name)
def get_absolute_url(self):
if 'cms.middleware.multilingual.MultilingualURLMiddleware' in settings.MIDDLEWARE_CLASSES:
return '/%s%s' % (lang, Page.get_absolute_url(self))
else:
return Page.get_absolute_url(self)
class Meta:
proxy = True
app_label = 'cms'
if …
Run Code Online (Sandbox Code Playgroud) 当我尝试编译这段代码时
import java.util.Optional;
public class GenericTest {
public static void main(String[] args) {
Optional.empty().map(o -> getStringClass(o)).orElse(String.class);
}
static Class<?> getStringClass(Object arg) {
return String.class;
}
}
Run Code Online (Sandbox Code Playgroud)
javac将失败,并显示以下错误:
GenericTest.java:6:错误:类别Optional中的方法orElse无法应用于给定类型; Optional.empty()。map(o-> getStringClass(o))。orElse(String.class); ^ 必需:Class <CAP#1> 找到:类<String> 原因:参数不匹配;Class <String>无法转换为Class <CAP#1> 其中T是类型变量: T扩展了在Optional类中声明的Object CAP#1是新鲜的类型变量: CAP#1扩展了对象的捕获范围 1个错误
但是,如果我改用方法引用,则javac会很好地编译代码:
import java.util.Optional;
public class GenericTest {
public static void main(String[] args) {
Optional.empty().map(GenericTest::getStringClass).orElse(String.class);
}
static Class<?> getStringClass(Object arg) {
return String.class;
}
}
Run Code Online (Sandbox Code Playgroud)
如果使用方法引用或lambda表达式,为什么会有区别?
根据我的理解,方法引用和lambda都具有type Function<Object,Class<?>>
,所以在这里我看不到区别。
Eclipse Java编译器(ecj)不会同时编译两个版本。
我需要非常快速地(1周)开发一个基本的Web应用程序来进行演示.
我的要求是
我的第一站是检查Wicket,因为我听说过它的好消息.我现在没有时间潜入任何沉重的事情,这可能在我的脑海中写下了JSF(我玩JSF1,陡峭的学习曲线,我现在已经滑倒了).
我很高兴将结果视为一次性,所以如果有一个框架开始很好,但是没有扩展到更大的项目,那就没关系.
对框架/方法表示赞赏的任何建议.
要从mongo集合中查找一个项目,我正在尝试将过滤器应用于集合.但是有一个编译错误如下.
此代码取自官方mongodb
文档
var filter = Builders<BsonDocument>.Filter.Eq("_id", id);
var result = _collection.Find(filter);
Run Code Online (Sandbox Code Playgroud) 操作系统:Windows 10 Java:11.0.1
我设置环境变量
set JAVA_HOME=<null>
set CLASSPATH=<null>
set PATH='d:\java\jdk-11.0.1\bin
Run Code Online (Sandbox Code Playgroud)
正在运行的 cmd
版本
正在运行的 cmd
java -version
Run Code Online (Sandbox Code Playgroud)
返回此错误:
虚拟机初始化时出错 java.lang.IllegalArgumentException:空字符集名称 在 java.nio.charset.Charset.lookup(java.base/Charset.java:455) 在 java.nio.charset.Charset.defaultCharset(java.base/Charset.java:608) 在 java.lang.StringCoding.decode(java.base/StringCoding.java:316) 在 java.lang.String.(java.base/String.java:592) 在 java.lang.String.(java.base/String.java:614) 在 java.lang.System.initProperties(java.base/Native Method) 在 java.lang.System.initPhase1(java.base/System.java:1942)
我试试
java -Dfile.encoding=UTF-8
Run Code Online (Sandbox Code Playgroud)
同样的错误
我的 jdk8 没问题
我的 jdk 11 在公司电脑上没问题
什么?
如何在基于 Kotlin 的 Gradle 脚本中为测试启用“--enable-preview”?我几乎尝试了所有我可以在网上找到的东西,/sf/answers/4329483931/是最接近正确答案的。
我仍然收到以下:test
任务错误
org.gradle.api.internal.tasks.testing.TestSuiteExecutionException: Could not execute test class 'com.blabla.playground.AppTest'.
at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(SuiteTestClassProcessor.java:53)
Caused by: java.lang.UnsupportedClassVersionError: Preview features are not enabled for com/blabla/playground/AppTest (class file version 58.65535). Try running with '--enable-preview'
at java.base/java.lang.ClassLoader.defineClass1(Native Method)
Run Code Online (Sandbox Code Playgroud)
按脚本是
plugins {
java
application
}
repositories {
jcenter()
}
dependencies {
implementation("com.google.guava:guava:28.2-jre")
testImplementation("org.junit.jupiter:junit-jupiter-api:5.6.0")
testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:5.6.0")
}
application {
mainClassName = "com.blabla.playground.App"
}
java {
sourceCompatibility = JavaVersion.VERSION_14
targetCompatibility = JavaVersion.VERSION_14
}
tasks {
withType<Test>().all {
allJvmArgs.add("--enable-preview")
testLogging.showStandardStreams = true
testLogging.showExceptions …
Run Code Online (Sandbox Code Playgroud) 下面的函数破解了“HttpURLConnection#methods”静态字段(通过 Java 反射)。我正在使用反射来对我的代码功能进行单元测试。我发现我们无法更改 JDK12 中的静态最终字段。我找到了一种使用 unsafe 的解决方案,但我不确定如何使用 unsafe 让此函数在 JDK12 中工作。
protected static void allowMethods(String... methods) {
try {
Field methodsField = HttpURLConnection.class.getDeclaredField("methods");
Field modifiersField = Unsafe.class.getDeclaredField("modifiers");
modifiersField.setAccessible(true);
modifiersField.setInt(methodsField, methodsField.getModifiers() & ~Modifier.FINAL);
methodsField.setAccessible(true);
String[] oldMethods = (String[]) methodsField.get(null);
Set<String> methodsSet = new LinkedHashSet<>(Arrays.asList(oldMethods));
methodsSet.addAll(Arrays.asList(methods));
String[] newMethods = methodsSet.toArray(new String[0]);
methodsField.set(null/*static field*/, newMethods);
} catch (NoSuchFieldException | IllegalAccessException e) {
throw new IllegalStateException(e);
}
}
Run Code Online (Sandbox Code Playgroud)
这是上述代码的堆栈跟踪:
Caused by: java.lang.IllegalStateException: java.lang.NoSuchFieldException: modifiers
at pii.rest.call.RestUtils.allowMethods(RestUtils.java:75)
at pii.rest.call.JobAbort.<clinit>(JobAbort.java:39)
Caused by: java.lang.NoSuchFieldException: modifiers
at java.base/java.lang.Class.getDeclaredField(Class.java:2549) …
Run Code Online (Sandbox Code Playgroud) 期望似乎对我不起作用:
package com.jjs.caf.library.client.drafting;
import static org.junit.Assert.*;
import org.easymock.EasyMock;
import org.junit.Before;
import org.junit.Test;
import com.jjs.caf.library.client.CustomerManager;
import com.jjs.caf.library.client.UserBookLimiter;
public class DraftTest {
UserBookLimiter userBookLimiter;
int expected = 5;
@Before
public void setUp() throws Exception {
userBookLimiter = EasyMock.createMock(UserBookLimiter.class);
EasyMock.expect(userBookLimiter.getMaxNumberOfBooksAllowed()).andReturn(5);
}
@Test
public final void test() {
assertEquals(expected, userBookLimiter.getMaxNumberOfBooksAllowed());
}
}
Run Code Online (Sandbox Code Playgroud)
它应该是5,但我得到0,好像期望不会在那里...
java ×7
c# ×1
django ×1
django-cms ×1
easymock ×1
epoll ×1
events ×1
gradle ×1
java-11 ×1
javac ×1
jvm ×1
kotlin ×1
lambda ×1
mongodb ×1
networking ×1
reflection ×1
search ×1
static-block ×1
tcl ×1
tcp ×1
templates ×1
unit-testing ×1
windows ×1