这是我的代码,
package com.software.roux.diabcalc;
import android.content.Intent;
import android.content.SharedPreferences;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
SharedPreferences mPrefs;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setTitle("Insulin Calculator");
mPrefs=this.getSharedPreferences("settings", 0);
}
public void addclick(View a) throws InterruptedException {
if (a.getId() == R.id.add1) {
EditText a1 = (EditText) findViewById(R.id.add1);
EditText a2 = (EditText) findViewById(R.id.add2);
Double currentlevel = Double.parseDouble(a1.getText().toString());
Double carbseaten = Double.parseDouble(a2.getText().toString());
Double oldcurrentlevel = 9999.9;
Double oldcarbseaten = 9999.9;
try {
while(true) {
Thread.sleep(1000);
if (currentlevel != oldcurrentlevel) {
if (carbseaten != oldcarbseaten) {
double bolusdose = Double.parseDouble(mPrefs.getString("bolus", "0"));
double correctiondose = Double.parseDouble(mPrefs.getString("correction", "0"));
double targetlow = Double.parseDouble(mPrefs.getString("low", "0"));
double targethigh = Double.parseDouble(mPrefs.getString("high", "0"));
double correctto = Double.parseDouble(mPrefs.getString("corrset", "0"));
double firststep = 0;
if (currentlevel > targethigh) {
firststep = ((currentlevel - correctto) / correctiondose);
} else if (currentlevel < targetlow) {
firststep = ((currentlevel - targethigh) / correctiondose);
} else {
firststep = 0;
}
double secondstep = carbseaten / bolusdose;
double firstplussecond = firststep + secondstep;
double result = 0;
result = firstplussecond;
TextView t = (TextView) findViewById(R.id.answerobj);
t.setText("You Need To Use: " + result + " Units");
}
}
}
}
catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public void switchclick(View b){
if(b.getId() == R.id.settings)
{
Intent myIntent = new Intent(MainActivity.this, Settings.class);
MainActivity.this.startActivity(myIntent);
}
}
}
显示错误,
extraCmds := []string{"-q", "-dBATCH", "-dNOPAUSE", "-dSAFER", "-sDEVICE=pcxmono",
fmt.Sprintf("-r%v", dpi), // -r600
"-sOutputFile=BBB%03d.pcx",
"WO-BC-CARE.pdf",
}
s, _ := exec.Command("gs", extraCmds...).Output()
reslt := string(s)
log.Println(reslt)
听起来无法找到ps库,但是不知道如何使用exec.Command设置gs路径。 感谢您的提前建议。
[更新],我通过将gs从9.20升级到9.21解决了这个问题。使用golang exec.Command时需要注意另一个陷阱。不要在参数中加上引号,比如
2017/03/21 09:24:48 Error: /undefinedfilename in --findlibfile--
Operand stack:
()
Execution stack:
%interp_exit .runexec2 --nostringval-- --nostringval-- --nostringval-
- 2 %stopped_push --nostringval-- --nostringval-- --nostringval-- fa
lse 1 %stopped_push --nostringval-- 1864 1 3 %oparray_pop --nost
ringval--
Dictionary stack:
--dict:1200/1684(ro)(G)-- --dict:0/20(G)-- --dict:78/200(L)--
Current allocation mode is local
Last OS error: No such file or directory
。您必须改为使用"BBB%03d.pcx"
。
答案 0 :(得分:0)
错误告诉您文件名未定义,它是一个库文件,并且该文件的名称为空。 ()是字符串分隔符,操作数堆栈的顶部包含该字符串。
遗憾的是,您没有引用整个错误消息,因此我无法分辨您正在使用的Ghostscript版本。我将假设您使用的是Linux,因为您使用过'gs'。你也没有说你在哪里得到你正在使用的Ghostscript版本。
您可以使用-I开关将目录添加到Ghostscript搜索路径,但这似乎不太有用,因为您可能仍在搜索空名称,这显然不会被发现
我首先打印出你发送给exec的确切命令行,然后从shell中尝试,如果可以,那么我们可以进一步发展。