如何运行.jar由sbt生成的文件package?
我用一个.scala源创建了一个非常简单的例子:
package org.pack {
class ScalaParser(files: Array[String]) {
def doAll() = {
println("hello")
}
}
object Main {
def main(args: Array[String]): Unit = {
val sp = new ScalaParser(args)
sp.doAll()
}
}
}
Run Code Online (Sandbox Code Playgroud)
跑完之后
$ sbt
> compile
> package
Run Code Online (Sandbox Code Playgroud)
.jar创建于/target/scala-<version>.如果我尝试运行它,它将无法给出此错误:
$ java -jar package_2.9.2-0.1.jar
Exception in thread "main" java.lang.NoClassDefFoundError: scala/ScalaObject
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at …Run Code Online (Sandbox Code Playgroud) 我打算nltk.tokenize.word_tokenize在我的帐户受空间配额限制的群集上使用.在家里,我下载了所有nltk资源nltk.download()但是,据我发现,它需要~2.5GB.
这对我来说似乎有点矫枉过正.你能建议什么是最小的(或几乎是最小的)依赖关系nltk.tokenize.word_tokenize?到目前为止,我已经看到了,nltk.download('punkt')但我不确定它是否足够,尺寸是多少.究竟应该运行什么才能使它工作?
我是Theano的新手,我想知道如何直接从脚本配置默认设置(不设置envir.变量).例如,这是一个有效的解决方案(来源):
$ THEANO_FLAGS=mode=FAST_RUN,device=gpu,floatX=float32 python check1.py
Run Code Online (Sandbox Code Playgroud)
我打算提出仅由以下方法执行的相同解决方案:
$ python check1.py
Run Code Online (Sandbox Code Playgroud)
并且其他参数直接在脚本本身中设置.就像这样:
import theano
theano.set('mode', 'FAST_RUN')
theano.set('device', 'gpu')
theano.set('floatX', 'float32')
# rest of the script
Run Code Online (Sandbox Code Playgroud)
它甚至可能吗?我读了配置页面,它提供了允许我读取已经设置的值的信息(但不是我自己设置的).
我在stackoverflow上已经阅读了很多关于unordered_map (c ++ 11) 时间复杂度的内容,但是我没有找到我的问题的答案.
我们假设按整数索引(仅举例):
插入/在函数不断工作(平均时间),所以这个例子需要O(1)
std::unordered_map<int, int> mymap = {
{ 1, 1},
{ 100, 2},
{ 100000, 3 }
};
Run Code Online (Sandbox Code Playgroud)
我很好奇的是迭代存储在地图中的所有(未排序的)值需要多长时间 - 例如
for ( auto it = mymap.begin(); it != mymap.end(); ++it ) { ... }
Run Code Online (Sandbox Code Playgroud)
我可以假设每个存储的值只被访问一次(或两次或恒定次数)吗?这意味着迭代所有值都在N值映射O(N)中.另一种可能性是我的密钥{1,10,100000}的示例可能需要多达1000000次迭代(如果由数组表示)
是否有任何其他容器,可以线性迭代并且不断地通过给定密钥访问值?
我真正需要的是(伪代码)
myStructure.add(key, value) // O(1)
value = myStructure.at(key) // O(1)
for (auto key : mySructure) {...} // O(1) for each key/value pair = O(N) for N values
Run Code Online (Sandbox Code Playgroud)
std :: unordered_map是我需要的结构吗?
整数索引也足够,平均复杂度也很高.
我想将我的git用户名保存在远程URL地址中,以便每次推或拉都不输入.
我找到了许多解决问题的答案(比如这个).问题是我的用户名包含,@因为它(并且不幸地必须是)一个电子邮件地址.
当我进入时http://me@domain.com@myrepo.git,解析器很困惑,只me作为用户名.
我该如何解决?它甚至可以提供吗?不幸的是,我不能使用ssh,https是唯一的选择.
我发现很多关于转义字符串的帖子,但没有关于转义字符串的消息.
使用Scala Play,我的控制器接受JSON作为请求.我通过以下方式从中提取字符串:
val text: play.api.libs.json.JsValue = request.body.\("source")
Run Code Online (Sandbox Code Playgroud)
如果我打印text.toString我得到例如
"Hello\tworld\nmy name is \"ABC\""
Run Code Online (Sandbox Code Playgroud)
如何将此转义文本转换为普通文本?结果应该是这样的
Hello world
my name is "ABC"
Run Code Online (Sandbox Code Playgroud)
到目前为止,我已经尝试过如下方法:
replaceAll("""\\t""", "\t")
Run Code Online (Sandbox Code Playgroud)
但是,创建所有可能的转义规则可能过于复杂.所以我的问题是:如何轻松地做到这一点?可能使用标准库.Java解决方案也是可能的.
是否可以注释一段代码?例如循环或简单的花括号?如果是这样,怎么样?
First.java
package An;
import An.ForCycle;
class First {
public static void main(String[] args) {
First f = new First();
}
public First () {
@ForCycle
{ // error: illegal start of type {
int k;
}
@ForCycle
for (int i = 0; i < 5; i++) { // similar error (illegal start...)
System.out.println(i);
}
}
}
Run Code Online (Sandbox Code Playgroud)
ForCycle.java
package An;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Retention(RetentionPolicy.SOURCE)
public @interface ForCycle {}
Run Code Online (Sandbox Code Playgroud)
根据http://www.javacodegeeks.com/2012/11/java-annotations-tutorial-with-custom-annotation.html
@Target - 表示注释类型适用的程序元素的种类.一些可能的值是TYPE,METHOD,CONSTRUCTOR,FIELD等.如果不存在Target元注释,则可以在任何程序元素上使用注释. …
我已经看到了三种可能的Java版本符号,例如Java 8可以用以下方式编写:
哪个是正确的?我的意思是哪一个可用于学术写作?
与JDK和JRE类似的问题
我想要的只是使用一些并发Set(看起来根本不存在).Java用于java.util.concurrent.ConcurrentHashMap<K, Void>实现该行为.我想在Scala中做类似的事情,所以我创建了Scala HashMap(或Java ConcurrentHashMap)的实例,并尝试添加一些元组:
val myMap = new HashMap[String, Unit]()
myMap + (("myStringKey", Unit))
Run Code Online (Sandbox Code Playgroud)
这当然会破坏编译过程,因为Unit是抽象的和最终的.
如何使这项工作?我应该使用Any/ AnyRef而不是吗?我必须确保没有人插入任何价值.
感谢帮助
我想建立一个基本的hello world项目.单元测试应该test/在书中描述的目录中.到目前为止,我的代码如下.
SRC/main.rs
pub mod player;
fn main() {
println!("Hello, world!");
}
Run Code Online (Sandbox Code Playgroud)
SRC/player.rs
pub fn rep(arg: i32) -> i32 {
arg
}
Run Code Online (Sandbox Code Playgroud)
测试/ player.rs
extern crate player;
#[test]
fn it_works() {
assert_eq!(4, player::rep(2+2));
}
Run Code Online (Sandbox Code Playgroud)
Cargo.toml
[package]
name = "myapp"
version = "0.1.0"
authors = ["My Name <spam@example.com>"]
Run Code Online (Sandbox Code Playgroud)
我相信代码与本书非常相似.但是,cargo test失败了:
tests/player.rs:1:1: 1:21 error: can't find crate for `player`
tests/player.rs:1 extern crate player;
^~~~~~~~~~~~~~~~~~~~
error: aborting due to previous error
Run Code Online (Sandbox Code Playgroud)
问题是什么?我完全迷失了.